utf8 veritabanı db latin1 veritabanı dökümü ithal

3 Cevap php

Ben mysql v4.0.21 bir veritabanının mysql dökümü yaptım iconv utf8 için latin1 dönüştürmek için kullanılan ve yeni bir sunucu mysql üzerine ithal v5.0.45

Bu latin1 eski sunucuda, bu utf8 yeni sunucuda bulunuyor, bu yüzden mysql dökümü Bu koştu: iconv −f latin1 −t UTF−8 quickwebcms_2010-03-01.sql

Başarılı koştu, sonra ben yeni sunucu üzerine ithal.

Ve Â: Şimdi soru (?) işaretleri (College?s örnek) görüntüler (örnek: CollegeÂ’s) bu bazılarını yazınca benim PHP uygulamasında veri.

Ben bu karakterleri göstermek tabloyu ihraç ve find ve Textmate içindeki tüm değiştirin, sonra yeni veritabanına geri ithal ve boş olarak bazı alanlara yükler, böylece bulma ve değiştirme sürecinde berbat bir şey olabilir . Ben hiçbir BOM utf8 olarak tablo csv kaydedilir ve sadece utf8 ve hala aynı şeyi yapar.

Bu oluyor olabilir neden olarak herhangi bir yardım takdir edilmektedir.

3 Cevap

Lütfen tabloları içeriği tüm Tamam (ve UTF-8) olan ve eşik Web uygulaması "kötü" karakter varsa, MySQL bağlantısı PHP komut dosyası UTF-8 karakter kümesini kullanarak emin olun. Veritabanları ve tablolar UTF-8 olsa bile, MySQL (en azından benim paylaşılan sunucu config) varsayılan olarak latin1 bağlantılarını kullanır. Yani UTF-8 içerik göndermek için MySQL söylemek zorundayım. Aksi takdirde UTF-8 web sayfalarında "kötü" karakterleri üreten latin1 için anında dönüştürür.

Kullan mysql_set_charset kullanılabilir, aksi takdirde bir SQL sorgusu ile ayarlayabilirsiniz (her zaman mysql_set_charset varsa kullanın):

if (function_exists('mysql_set_charset'))
    mysql_set_charset('utf8', $conn);
else
{
    if (mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn) === false)
    {
        //Error! Do something...
    }
}

Ayrıca (X) HTML işaretleme çok UTF-8 kullanır emin olun:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Daha sonra (ya da sizin için bunu yapmak için bazı tür bir komut dosyası kullanabilirsiniz) her masada uygun düzgün ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 DEFAULT COLLATION utf8_unicode_ci kullanarak latin1 olarak yeni sunucu üzerine veri yükleme daha iyi olabilir.

Yoksa o dökümü, ilk dönüştürebilirsiniz.