lostyazilim
tr.link

Kurtulamadığım Türkçe karakter hatası

13 Mesajlar 1.838 Okunma
lstbozum
tr.link

AzveNet AzveNet WM Aracı Kullanıcı
  • Ü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.
wmaraci
reklam

capscroll capscroll WM Aracı Kullanıcı
  • Ü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.
tarantula901 JoshgunPRO

kişi bu mesajı beğendi.

AzveNet AzveNet WM Aracı Kullanıcı
  • Ü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.

capscroll capscroll WM Aracı Kullanıcı
  • Ü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.
 

 

wmaraci
wmaraci

AzveNet AzveNet WM Aracı Kullanıcı
  • Ü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.

capscroll capscroll WM Aracı Kullanıcı
  • Ü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)
tarantula901

kişi bu mesajı beğendi.

AzveNet AzveNet WM Aracı Kullanıcı
  • Ü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.

AzveNet AzveNet WM Aracı Kullanıcı
  • Ü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.

ikisekiz ikisekiz WM Aracı Kullanıcı
  • Üyelik 08.10.2018
  • Yaş/Cinsiyet 39 / E
  • Meslek Freelancee
  • Konum İzmir
  • Ad Soyad M** A**
  • Mesajlar 46
  • Beğeniler 4 / 7
  • Ticaret 0, (%0)
Bana bir sayfa at bakim
 

 

AzveNet AzveNet WM Aracı Kullanıcı
  • Ü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.
capscroll

kişi bu mesajı beğendi.

İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
wmaraci
wmaraci
Konuyu toplam 3 kişi okuyor. (0 kullanıcı ve 3 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al