Bir websitemizde Türkçe karakter sorunu yaşıyoruz.
PHP sürümümüz 5.6 - Sistemden dolayı üst sürümlere geçiş imkanı yok.
DBde kayıtlı verilerde ı,Ã,¼, ± gibi karakterler var. Biz ön tarafta gösterirken Türkçe formatta göstermek istiyoruz.
Örnek : Uluslararası ÇaÄŸdaÅŸ EÄŸitim AraÅŸtırmaları
Çıktısı : Uluslararası Çağdaş Eğitim Araştırmaları
SQL bağlantısı mysql_connect ile olmalı. Sitedeki tüm işlemler buna bağlı. PDO vs. kullanamayız.
Örnek sorgu:
$ConnVeriTabani = mysql_connect($hostname_ConnVeriTabani, $username_ConnVeriTabani, $password_ConnVeriTabani) or trigger_error(mysql_error(),E_USER_ERROR); mysql_select_db($database_ConnVeriTabani, $ConnVeriTabani); $query_grupDetay = sprintf("SELECT * FROM x WHERE kisi_id = %s", GetSQLValueString($row_rsDetay['ID'], "int")); $grupRowDetay = mysql_query($query_grupDetay, $ConnVeriTabani) or die(mysql_error()); $row_grupDetay = mysql_fetch_assoc($grupRowDetay); $totalRows_grupDetay = mysql_num_rows($grupRowDetay);MariaDB'de bu şekilde sorgu düzgün şekilde veriyi Türkçe olarak getiriyor. Fakat MySQL 8 sürümünde karakterler bozuk şekilde geliyor. Yani dbde kayıtlı olduğu şekilde geliyor.
Birçok utf8 ve mysql replace fonksiyonları denedik fakat bir çözüm bulamadık.
Dbde karakterleri convert etmeden, direkt Türkçe çıktı verecek şekilde işlem nasıl yapabilirim?
Dediğim gibi MariaDB'de herhangi bir problem yok fakat MySQL 8 'de doğru şekilde Türkçe çıktı alamıyoruz. PHP'de fonksiyondan geçirip hatayı %99 oranda giderebiliyoruz fakat böyle bir çözüm istemiyoruz.
Test etmek, denemek isteyenler olabilir diye örnek sql kayıtı paylaşıyorum.
CREATE TABLE `test` ( `id` int NOT NULL, `admin_id` int DEFAULT NULL, `hatirlatici_metin` mediumtext CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci, `tarih` date DEFAULT NULL, `durum` tinyint NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; INSERT INTO `test` (`id`, `admin_id`, `hatirlatici_metin`, `tarih`, `durum`) VALUES (1, 171 'eşi EVLİYAOĞLU ve oğlu EVLİYAOĞLU\r\npasaportları ayında başvuru yapacağını söyledi. Takip et\r\n', '2022-12-27', 0);