Ben veri bunu nasıl düzeltebilirim, bir UTF-8 MySQL veritabanı oturan kodlanmış latin1 var?

2 Cevap php

Ben veri bunu nasıl düzeltebilirim, bir UTF-8 MySQL veritabanı oturan kodlanmış latin1 var? Ne yazık ki gitmek için hiçbir orijinal veri yoktur.

Ben doğru verileri görüntülemek verebilecek tek yolu PHP, HTML ve MySQL latin1 şeyi ayarlamak için olduğu gibi ben bu kadar anladım.

Bu tamamlandıktan sonra, benim html ve php de utf-8 için her şeyi geri değiştirebilirsiniz.

Versions: mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (x86_64) using readline 5.2

EDIT: I should mention, everything is working OK as I am telling PHP and HTML to use latin1 encoding, however, this just seems bad to me.

2 Cevap

O this article does exactly what you need to inanıyorum.

Ben aşağıda yapılması gereken adımları paraphrased ettik - replace 'MyDb' veritabanınızın adı ile. I would recommend making a backup before you begin!

USE information_schema;
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';

SQL komut dosyası içine yukarıdaki tüm SELECT tabloların çıkışını kopyalayın. Bunun için aşağıdakileri ekleyin:

ALTER DATABASE MyDb CHARACTER SET utf8;

MYDB (USE MyDb;) geçmek ve SQL komut dosyasını çalıştırın.

Aşağıdaki sorguyu çalıştırmak deneyebilirsiniz:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

NOTE: I haven't tried this, but this is taken from the MY-SQL docs (http://dev.mysql.com/doc/refman/5.0/en/charset-column.html).
The page linked above has some more information, but this seems to be the query that you want (it is posted right at the bottom in case you were wondering). Hope this helps.