GTAMulti - GTA Türkiye

San Andreas Multiplayer => Yardım Talepleri => PAWN Kodlama => Kilitli Konular => Konuyu başlatan: VERITAS - 25 Nisan 2020, 02:42:55

Başlık: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 02:42:55
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.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 03:04:14
MySQL veri tabanını utf8_turkish_ci olarak kullan ve pawnoda charseti utf8 olarak değiştir.

PAWN Kodu: Seç
mysql_set_charset("utf8", BAGLANTI DEĞİŞKENİ BURAYA);
Ek olarak oyun içerisine Türkçe karakter verileri çekmek istediğinde şunları kullanabilirsin;

PAWN Kodu: Seç
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.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 03:43:08
PAWN Kodu: Seç
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
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 04:31:36
Mysql ile bağlantı kurulan yere ekle onu.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 04:52:39
Alıntı yapılan: Metafor - 25 Nisan 2020, 04:31:36
Mysql 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
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 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.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 05:45:25
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.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 05:54:40
Veri tabanında mı sampta mı?
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 05:55:13
Alıntı yapılan: Metafor - 25 Nisan 2020, 05:54:40
Veri tabanında mı sampta mı?

Veri tabanında.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 05:57:18
Bir şeyleri yanlış yapıyorsun o zaman. Charseti, sql_connect() gibi fonksiyonun içerisine yazıyorsun değilmi?
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 05:58:42
Alıntı yapılan: Metafor - 25 Nisan 2020, 05:57:18
Bir şeyleri yanlış yapıyorsun o zaman. Charseti, sql_connect() gibi fonksiyonun içerisine yazıyorsun değilmi?

PAWN Kodu: Seç
mysql_set_charset("utf8", g_SQL);
Böyle yazdım. R41-4 kullanmaktayım.

@Metafor
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 06:00:23
Bu arada bunu sen neden değiştirmek istiyorsun, oyuncu panelinden veri çekmek için felan mı?
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 06:03:23
Alıntı yapılan: Metafor - 25 Nisan 2020, 06:00:23
Bu 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.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 06:10:58
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.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 06:14:28
Alıntı yapılan: Metafor - 25 Nisan 2020, 06:10:58
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.

Denedim ve Mysql'de "ş" harfinde "?" karakteri yazıyordu.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 06:23:58
Pawnoda mysql_connect aratıp, fonksiyonunu buraya atar mısın.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 06:26:53
PAWN Kodu: Seç
g_SQL = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS, SQL_DB, option_id);
@Metafor
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 06:36:17
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
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 06:38:08
Alıntı yapılan: Metafor - 25 Nisan 2020, 06:36:17
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.

Teşekkür ederim desteğiniz için o halde yarın görüşmek üzere. İyi günler dilerim.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: chinohead - 25 Nisan 2020, 10:30:57
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?
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 16:07:01
Alıntı yapılan: manhunt - 25 Nisan 2020, 10:30:57
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?
PAWN Kodu: Seç
        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, "", "");
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: chinohead - 25 Nisan 2020, 21:41:58
Alıntı yapılan: VERITAS - 25 Nisan 2020, 16:07:01
PAWN Kodu: Seç
        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?
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: Eamon - 25 Nisan 2020, 21:50:54
Dc'den ekleyebilirsin beni.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 25 Nisan 2020, 22:08:56
Alıntı yapılan: manhunt - 25 Nisan 2020, 21:41:58
Alıntı yapılan: VERITAS - 25 Nisan 2020, 16:07:01
PAWN Kodu: Seç
        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:54
Dc'den ekleyebilirsin beni.

Ekledim.

@Metafor
@manhunt
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: chinohead - 25 Nisan 2020, 22:39:17
Profilimde Discord bağlantım var, ekle bakalım sorununa.
Başlık: Ynt: MySQL türkçe karakter sorunu
Gönderen: VERITAS - 26 Nisan 2020, 01:12:34
@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

PAWN Kodu: Seç
mysql_set_charset("latin1");