-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
veritabanında Türkçe karakterli kelimeler var.
bu kelimeleri mysql ile sayfaya bastırınca sorun yok. ancak substr,array vs gibi şekillerde harflerini almak istedğimde Türkçe karakter � şeklinde çıkıyor.
mysql bağlantısında utf8 tanımlı.sayfada utf8 tanımlı headerda php olarak tanımlı.
işin tuhafı verinin gelişide utf8.yani ascii falanda gelmiyor. mb_detect_encoding ile kontrol ediyorum utf8. mb_convert_encoding ile yinede tekrar çevireyin diyorum bu sefer ? işareti çıkıyor.
wamp harici reel sunucuda denedim yine aynı.
bildiklerimin dışında sanıyorum 2 gündür birde araştırıp denediklerim var.
veri utf8 gelirken hatta db de zaten tr karakter olarak yazılıyorken ve sadece o veriyi bütün olarak çektiğimde geliyorken fonksiyon ile harf almak istediğimde maalesef bu takıldığım yerden çıkamadım.
daha önce bu tip bir sorun başına gelen ve çözebilen var mı?
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
-
Üyelik
02.08.2019
-
Yaş/Cinsiyet
23 / E
-
Meslek
Öğrenci
-
Konum
Kahramanmaraş
-
Ad Soyad
A** K**
-
Mesajlar
164
-
Beğeniler
41 / 54
-
Ticaret
0, (%0)
MySQL Veritabanı karşılaştırması: utf8_turkish_ci
PHP: $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$dbh->exec("set names utf8");
HTML: etiketleri arasında
Notepad++ ile dosyaya girin ve üst panelden Kodlama > UTF-8 seçeneğini seçin.
Eğer yine olmazsa dosyayı uzak bir sunucuya yükleyin birde biz girmeyi deneyelim, belki client kaynaklı bir problemdir.
2 kişi bu mesajı beğendi.
-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
capscroll adlı üyeden alıntı
MySQL Veritabanı karşılaştırması: utf8_turkish_ci
PHP:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$dbh->exec("set names utf8");
HTML: etiketleri arasında
Notepad++ ile dosyaya girin ve üst panelden Kodlama > UTF-8 seçeneğini seçin.
Eğer yine olmazsa dosyayı uzak bir sunucuya yükleyin birde biz girmeyi deneyelim, belki client kaynaklı bir problemdir.
üstad sağolun. bunların hepsi denediğim yöntemler.
client kaynaklı olsa sanıyorum dbye hiç bir fielda yazamazdım tr karakteri. uzak sunucuda zaten denedim.
zaten bilinen tüm yöntemleri denedim.
kelime harflerini arraye atamadan standart şekilde $veri=$kelime[0]; şeklinde bile aldım.
sıkıntı şu ki veri zaten utf8 olarak geliyor.
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
-
Üyelik
02.08.2019
-
Yaş/Cinsiyet
23 / E
-
Meslek
Öğrenci
-
Konum
Kahramanmaraş
-
Ad Soyad
A** K**
-
Mesajlar
164
-
Beğeniler
41 / 54
-
Ticaret
0, (%0)
Eğer sunucu kaynaklı olsaydı bunları yaptığınızda mutlaka olması gerekirdi, client derken istemci yani sizin bilgisayarınızı kastettim. Mümkünse indexi bana özelden iletin birde ben kontrol edeyim.
-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
Yok yok anladım üstad dediğinizi. Ben kelimeyi bütün aldığımda bu sorun olmuyor. Onu söylemek istemiştim. Eve geçince atayım üstad sayfayı. Gerçi başka arkadaşımada denettim dah önce. Belki ikimizdede sorun olabilir. Olurmu olur yani
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
-
Üyelik
02.08.2019
-
Yaş/Cinsiyet
23 / E
-
Meslek
Öğrenci
-
Konum
Kahramanmaraş
-
Ad Soyad
A** K**
-
Mesajlar
164
-
Beğeniler
41 / 54
-
Ticaret
0, (%0)
Konuyu daha dikkatli okudum şimdi anladım :))) Stackoverflow'da şöyle bir yöntem buldum, denediniz mi?
$asd = array("şş", "üü", "ğğ");
function utf8_converter($array){
array_walk_recursive($array, function(&$item, $key){
if(!mb_detect_encoding($item, 'utf-8', true)){
$item = utf8_encode($item);
}
});
return $array;
}
echo utf8_converter($asd)[2];
Çıktı: ğğ (Harf alma işleminden sonra veriyi yazdırırken utf8_converter adlı fonksiyonu kullanın)
1 kişi bu mesajı beğendi.
-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
üstad bunuda deneyeyim :)
gerçi benim arraydeki elemanda utf8 geliyor ama :) bakarsınız bu ilaç olur :)
birde buna sebep olan sorunu bilmek lazım aslında.
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
maalesef bunu denemişim :) bu kodlarla denedim yine olmadı...
kelimeyi dbden yazdırırken normal çıkıyor tr karakterler.
utf8 e çevirince Å-Ÿ şeklinde çıkıyor ve Ÿ "o" harfi :) utf8 yapınca aynı harf "�" şeklinde çıkıyor.
gerçekten karşılaşması zor bi sorun yine bana denk geldi sanıyorum.
dikkatsizliğimden karakter setini hatalı yapmışımdır dedim, bir kaç defa yenidb,notepadde karakter seti yaptım olmadı. sanırım her seferinde dikkatsiz davranmam imkansıza yakın olsa bile imkansız değil :)
artık bir yerde birşeyi hatalı yaptığımı düşünüyorum. ama php içerisinde bir sorun olması ihtimalini es geçmiyorum :)
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
üstadlar mb_substr ile biraz gereksiz kod yığınıyla hallettim.
mb_substr dışındada tr karakterinden kurtulma yolu sanırım yok.
zaten substr de tr karakter sorununu yahut bu tür bir durumda(ben harf harf almak istediğim için) kestirme kodlar maalesef tr karakterde işe yaramadığından(yahut ben başaramadığımdan), belli sayıdaki karakterleri sıralı dizmek isteyenler için mb_substr ile harf harf alıp
$arrs = array($harf1,$harf2,$harf3,$harf4,$harf5);
sort($arrs, 2);
$sirali=$arrs[0].$arrs[1].$arrs[2].$arrs[3].$arrs[4].$arrs[5];
şu şekilde sıralı dizebilirsiniz.
en azından daha kestirme yolları bende tr karakter yüzünden işe yaramadı :)
ilgilenen arkadaşlara çok teşekkür ederim.
1 kişi bu mesajı beğendi.
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.