2011-08-09 8 views
1

私はMySQLに問題があり、utf-8を使用していましたが、HTML文字を使用してしまいましたが、後悔しています。私は今、HTMLとして保存された多くの外来文字を持つ4つのテーブルを持っています。MySQLテーブルのHTML外部文字をutf-8文字に変換する

私はutf-8を正しく処理するようにプログラミングとセットアップのMySQLを書き直すことができましたが、文字列をutf-8に変換する最良の方法は何ですか?

INSERT INTO `languages` (`id`, `title`, `native`, `alias`, `status`, `weight`, `updated`, `created`) VALUES 
(1, 'English', 'English', 'en', 1, 1, '2009-11-02 21:37:38', '2009-11-02 20:52:00'), 
(2, 'Dutch', 'Nederlands', 'nl', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(8, 'French', 'Français', 'fr', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(3, 'Spanish', 'Español', 'es', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(4, 'Italian', 'Italiano', 'it', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(6, 'German', 'Deutsch', 'de', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(7, 'Portuguese', 'Português', 'pt', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(11, 'Swedish', 'Svenska', 'sv', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(9, 'Polish', 'Polski', 'pl', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(12, 'Russian', 'Русский', 'ru', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(13, 'Afrikaans', 'Afrika', 'af', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(14, 'English', 'English', 'en', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(15, 'Albanian', 'Shqip', 'sq', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(16, 'Arabic', 'العربية', 'ar', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(17, 'Farsi', 'الفارسية', 'fa', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(18, 'Chinese (traditional)', '中文(繁體)', 'cht', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(19, 'Japanese', '日本', 'ja', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(20, 'Latin', 'Latina', 'la', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(21, 'Chinese (simplified)', '中文(简体)', 'chs', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(22, 'Turkish', 'Türkçe', 'tr', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(23, 'Catalan', 'Català', 'ca', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(24, 'Hindi', 'हिन्दी', 'hi', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'), 
(25, 'Hungarian', 'Magyar', 'hu', 1, NULL, '0000-00-00 00:00:00', '0000-00-00 00:00:00'); 

上記はSQLデータの例です。

答えて

2

PHPを使用してデータをラウンドトリップします。選択して、関連するフィールドをつかんでhtmlentities()まで実行して、実際の文字に変換してからデータをデータベースに戻します。

MySQL自体にエンティティのエンコード/デコードのサポートがないため、ラウンドトリップを行うのが最も簡単で簡単な方法です。

+0

またはMySQLの中ではOPにとって便利ではないかもしれません:http://forums.mysql.com/read.php?98,246527 – hakre

+0

htmlentities($ input)とhtml_entity_decode($ input)の両方を試しましたが、どちらもutf-8にデコードできません。 – Dennis

+0

http://php.net/htmlentities文字セットを指定する関数の3番目のパラメータがあります。 –

関連する問題