Merhabalar, arkadaşlar oyun içerisinden gönderilen türkçe karakter sql tabana ? işareti olarak kaydediliyor. Bunun çözümü tam olarak nasıldır? Yorumlar için şimdiden teşekkür ederim, iyi forumlar dilerim. SQL tabanda karşılaştırma olarak latin5_turkish_ci
kullanıyorum.
MySQL veri tabanını utf8_turkish_ci olarak kullan ve pawnoda charseti utf8 olarak değiştir.
mysql_set_charset("utf8", BAGLANTI DEĞİŞKENİ BURAYA);
Ek olarak oyun içerisine Türkçe karakter verileri çekmek istediğinde şunları kullanabilirsin;
mysql_query(BAGLANTI DEĞİŞKENİ BURAYA, "SET NAMES `latin5`");
mysql_query(BAGLANTI DEĞİŞKENİ BURAYA, "SET CHARACTER SET `latin5`");
mysql_query(BAGLANTI DEĞİŞKENİ BURAYA, "SET COLLATION_CONNECTION = `latin5_turkish_ci`");
Not; MySQL R39 için bunlar, diğer sürümlerde belki farklıdır fonksiyonlar, ona göre samp wiki'den bakabilirsin.
mysql_set_charset("utf8", BAGLANTI DEĞİŞKENİ BURAYA);Üsttekini OnGameModeInit'e yazacağım değil mi? Çünkü yazdım ve ardından sql'i de utf8_turkish_ci olarak güncelledim. Ardından tekrar denediğimde yine SQL'e türkçe karakterleri ? şeklinde yazdı.
@Metafor
Mysql ile bağlantı kurulan yere ekle onu.
Alıntı yapılan: Metafor - 25 Nisan 2020, 04:31:36Mysql ile bağlantı kurulan yere ekle onu.
Evet, OnGameModeInit'te benim bağlantı yeri ve oraya yazdım. Mysql'de ise türkçe karakter sorunu vermemesi için istediğim değikeni utf8_turkish_ci olarak güncelledim fakat sunucudan sql'e gelen girdiler yine de ? işareti gibi karakterle gösteriliyor. Sadece "mysql_set_charset("utf8", BAGLANTI DEĞİŞKENİ BURAYA);" ve sql de "utf8_turkish_ci" yi ayarlamam yeterli değil mi?
@Metafor
Şimdi olayı biraz detaylı anlatmaya çalışıcam.
Samptan, mysql veri tabanına Türkçe karakterli metin gönderirsen, o veriler orda farklı görünür. Eğer normal gözüksün onlar diyorsan charseti utf8 olarak yapmalısın.
Mysql veri tabanından utf8 karakter içeren veri çektiğin zaman karakterler sampta "?" gibi görünür. Bunu da düzeltmek istiyorsan o attığım diğer şeyleri kullan.
Alıntı yapılan: Metafor - 25 Nisan 2020, 05:42:46Şimdi olayı biraz detaylı anlatmaya çalışıcam.
Samptan, mysql veri tabanına Türkçe karakterli metin gönderirsen, o veriler orda farklı görünür. Eğer normal gözüksün onlar diyorsan charseti utf8 olarak yapmalısın.
Mysql veri tabanından utf8 karakter içeren veri çektiğin zaman karakterler sampta "?" gibi görünür. Bunu da düzeltmek istiyorsan o attığım diğer şeyleri kullan.
Usta, chartseti uft8 olarak yaptım OnGameModeInit'im de fakat hala ? işareti olarak gözüküyor garip bir şekilde.
Veri tabanında mı sampta mı?
Bir şeyleri yanlış yapıyorsun o zaman. Charseti, sql_connect() gibi fonksiyonun içerisine yazıyorsun değilmi?
Alıntı yapılan: Metafor - 25 Nisan 2020, 05:57:18Bir şeyleri yanlış yapıyorsun o zaman. Charseti, sql_connect() gibi fonksiyonun içerisine yazıyorsun değilmi?
mysql_set_charset("utf8", g_SQL);Böyle yazdım. R41-4 kullanmaktayım.
@Metafor
Bu arada bunu sen neden değiştirmek istiyorsun, oyuncu panelinden veri çekmek için felan mı?
Alıntı yapılan: Metafor - 25 Nisan 2020, 06:00:23Bu arada bunu sen neden değiştirmek istiyorsun, oyuncu panelinden veri çekmek için felan mı?
Grup oluşturmak için bir sistem yazdım kendi bilgilerim dahilinde. Ve gruba isim veriliyor. Grubun isminde türkçe karakter kullanıldığında SQL'e gelince "?" gibi karakterler gözüküyor. Kişi /grup yazınca mesela kişiye bulunduğu grubun ismi geliyor fakat Mysql'e "?" şeklinde karakterler girdi olduğundan ötürü kişi /grup yazınca ona da aynı şekilde "?" karakterleri geliyor. Bu durumun yaşanmaması için değiştirmek istiyorum.
Normal de charset felan hiç bir şey kullanmadan veri tabanına veri aktardığında bir sorun olmaz. mysql_set_charseti kaldır o zaman ve gönderilen tabloyu latin1_swedish_ci olarak değiştir dene bi.
Alıntı yapılan: Metafor - 25 Nisan 2020, 06:10:58Normal de charset felan hiç bir şey kullanmadan veri tabanına veri aktardığında bir sorun olmaz. mysql_set_charseti kaldır o zaman ve gönderilen tabloyu latin1_swedish_ci olarak değiştir dene bi.
Denedim ve Mysql'de "ş" harfinde "?" karakteri yazıyordu.
Pawnoda mysql_connect aratıp, fonksiyonunu buraya atar mısın.
g_SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB, option_id);@Metafor
Yarın olmazsa dc üzerinden yardım edebilirim. Normal şartlarda bir sorun olmaması lazım, charseti bile ayarlamasan normal bir şekilde veri çekebilmen lazım. Mysql R40 sürümünden kaynaklı bir şey mi bilmiyorum çünkü ben R39 kullandım yaklaşık 2 senedir ve sadece bu sene forumdan veri aktardığımda sorun olmuştu onu da düzelttim.
Not; yarın dediğim bugün, uyanınca felan :D
Alıntı yapılan: Metafor - 25 Nisan 2020, 06:36:17Yarın olmazsa dc üzerinden yardım edebilirim. Normal şartlarda bir sorun olmaması lazım, charseti bile ayarlamasan normal bir şekilde veri çekebilmen lazım. Mysql R40 sürümünden kaynaklı bir şey mi bilmiyorum çünkü ben R39 kullandım yaklaşık 2 senedir ve sadece bu sene forumdan veri aktardığımda sorun olmuştu onu da düzelttim.
Teşekkür ederim desteğiniz için o halde yarın görüşmek üzere. İyi günler dilerim.
Oyun içerisinden Türkçe karakterleri veri tabanına gönderen sistemin "CREATE TABLE" şeklinde bir format fonksiyonu var mı? Varsa hepsini atar mısın?
Alıntı yapılan: manhunt - 25 Nisan 2020, 10:30:57Oyun içerisinden Türkçe karakterleri veri tabanına gönderen sistemin "CREATE TABLE" şeklinde bir format fonksiyonu var mı? Varsa hepsini atar mısın?
format(String, 512, "INSERT INTO `gruplar` (SabitID, GrupIsmi, Acan)\
VALUES ('%d','%s', '%s')",
TOTAL_GRUP,
params[0],
Player[playerid][Name]);
mysql_tquery(g_SQL, String, "", "");
Alıntı yapılan: VERITAS - 25 Nisan 2020, 16:07:01 format(String, 512, "INSERT INTO `gruplar` (SabitID, GrupIsmi, Acan)\
VALUES ('%d','%s', '%s')",
TOTAL_GRUP,
params
[list][li],[/li][/list]
Player[playerid][Name]);
mysql_tquery(g_SQL, String, "", "");
Hayır, bu değil. "CREATE TABLE" diye arat bir şey çıkmıyor mu?
Dc'den ekleyebilirsin beni.
Alıntı yapılan: manhunt - 25 Nisan 2020, 21:41:58Alıntı yapılan: VERITAS - 25 Nisan 2020, 16:07:01 format(String, 512, "INSERT INTO `gruplar` (SabitID, GrupIsmi, Acan)\
VALUES ('%d','%s', '%s')",
TOTAL_GRUP,
params
[list]
[li],[/li]
[/list]
Player[playerid][Name]);
mysql_tquery(g_SQL, String, "", "");
Hayır, bu değil. "CREATE TABLE" diye arat bir şey çıkmıyor mu?
Hayır öyle bir şey yok.
Alıntı yapılan: Metafor - 25 Nisan 2020, 21:50:54Dc'den ekleyebilirsin beni.
Ekledim.
@Metafor @manhunt
Profilimde Discord bağlantım var, ekle bakalım sorununa.
@Metafor 'un desteğiyle Discord üzerinden sorunu çözdük.
Çözüm arayan diğer arkadaşlar için;
Mysql R41-4 kullanıyorum. OnGameModeInit'in altına Mysql'inizin connect ettireceğiniz yere bu komutu girmeniz gerekmektedir. Herkese yorumları ve ilgisi için teşekkür ediyorum, iyi forumlar dilerim. K/A
mysql_set_charset("latin1");