PHP'de Latin olmayan karakterlerin bozulma sorunu genellikle karakter kodlama ayarlarından kaynaklanır. Veritabanı tablo türlerini değiştirmeden bu sorunu çözebilirsiniz:

1. PHP dosyalarının başına UTF-8 header ekleyin:

header('Content-Type: text/html; charset=UTF-8');

2. MySQL bağlantısında karakter setini belirtin:

// MySQLi için
mysqli_set_charset($connection, "utf8");

// PDO için
$pdo = new PDO($dsn, $username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

3. HTML formlarında charset belirtin:

<meta charset="UTF-8">
<form accept-charset="UTF-8" method="post">

4. Mevcut verileri düzeltmek için:

// Veri gönderirken
$data = mb_convert_encoding($_POST['field'], 'UTF-8', 'auto');

// Veri alırken
$data = mb_convert_encoding($row['field'], 'UTF-8', 'UTF-8');

5. my.cnf dosyasında MySQL ayarları:

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci

Bu ayarlar mevcut tablolarınızı etkilemeden karakter kodlama sorununu çözmelidir.