2011-03-08 22 views
6

私はDBを持っています。latin1をUTF8に変換する

私は今 をutf8にタイトルを変換すると、コンテンツフィールド - すべてのデータは次のようになります。פורטל רעל נפתח רשמית! 私はそれが通常のヘブライ語の文字になりたいです。

おかげ

+0

'phpmyadmin'で行うと、そのテーブルに移動して属性を変更します... simple – diEcho

+0

すでに試してみましたが、pmaのデータは同じように見えます。 – WEBProject

+1

これ以上の情報がなければ何をすべきかを言うのは難しいですが、注意すべき点は、MySQLのテーブルの文字エンコーディングを変更するとデータを新しいエンコーディングに変換しない*ということです。データベースに格納されている実際のバイト数は変わりません。 –

答えて

5

このデータベースからmysqldumpを作成できます。その後、メモ帳++、ダンプファイルを開いてUTF8に変換し、最初のSET NAMES演算子を含むすべてのエンコーディングをutf-8に置き換えます。

phpMyAdmin(デフォルト設定)でファイルにダンプする場合、デフォルトで表示されているように、UTF-8ではなく出力ファイルのISO-8859-1を使用してください。

1

は、データベース全体を変換する必要がある場合、あなたはdatabaseback.sqlファイルとしてバックアップすることができます

ALTER TABLE `tablename` CHANGE `field_name` `field_name` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL 
8

を試してみてください、あなたのコマンドラインを形成 iconv -f latain -t utf-8 <databaseback.sql> databaseback.utf8.sql

あなたはhttp://www.php.net/manual/en/function.iconv.php
を使用することができます コマンドラインにアクセスできない場合にphpの各行を変換する

最後には、phpMyAdminの各フィールドの照合を変換することを忘れないでください、あなたは簡単に戻ってUTF8をresotreでき

更新

あなたがiconv is not recognizedを得た場合、それはあなたがいないことを意味しiconv

をインストールして、はるかに簡単なソリューションです:Unicodeの

の移行MySQLのデータ

http://daveyshafik.com/archives/166-migrating-mysql-data-to-unicode.html

+0

CMDで試しました - 'iconv 'は、実行可能なプログラムまたはバッチファイルとして認識されません。 – WEBProject

4

変換を行う少しのPHPスクリプトを書くことができます。 http://www.php.net/manual/en/function.mb-detect-encoding.phphttp://php.net/manual/en/function.mb-convert-encoding.phpを参照してくださいこれが私のやり方です。

厳密なモードを使用してください! http://www.php.net/manual/en/function.mb-detect-encoding.php#102510

擬似コードではsthです。このように:それは使用することができます

CONVERT(BINARY AS CAST(latin1の使用(フィールドを変換))UTF8を使用) :

str = getDataAsString() 
if(!isUTF8(str)) { 
    str = convert2UTF8(str) 
} 
saveStr2DB() 
+0

私はdetecを使用しているときにutf-8を取得しました。だからwierd。 – WEBProject

+0

厳格なモードとは何ですか? – WEBProject

+0

http://www.php.net/manual/en/function.mb-detect-encoding.php#102510を参照してください。 - 最後のパラメータを "true"に設定する必要があります。そうすれば正しいエンコーディングを見つけることができます:) – Tobias

6

次のMySQL関数は、二重符号化後の正しいUTF8文字列を返します。

UPDATE tablename SET field = CONVERT(CAST(フィールドUSING latin1)AS BINARY)USING utf8);フィールドを修正するためのUPDATEステートメントを使用します。

+1

これは特殊文字上の単語を切り捨てます:( –

関連する問題