2012-03-23 5 views
1

の問題、長いダッシュなどPHP MySQLのエンコーディング私は弾丸のような特殊文字が含まれているサードパーティ製のXMLを扱っていますXML

サンプルXML:

$xml = "<xml><node>• Special Characters</node></xml>"; 

私の目標は、このXMLを解析することですPHPを使用してMySQLデータベースに挿入します。私はsimplexml_import_domを使用してDOMノードからSimpleXMLElementオブジェクトを取得するためにXMLを解析するためにDomDocumentを使用しています。

xmlをエンコードするためにutf8_encodeを使用しない限り、ロード方法DomDocumentは失敗します。

$doc = new DOMDocument(); 
$doc->loadXML(utf8_encode($xml)); 

XMLを解析することができるようにするため、私はutf8_encode機能が必要であることを理解しています。 XMLを解析できるようになると、MySQLテーブルの挿入によって特殊文字が?またはごみ。解析後にブラウザに表示されたXMLからの特殊文字さえもゴミになります。

MySQLテーブルの列はテキストデータ型で、latin1_swedish_ciの照合順序です。私はSOに関する同様の質問を見て、mysql_query('SET NAMES utf8')を実行するか、列エンコーディングを変更するなどのソリューションを試しましたが、それらは私のためには機能しませんでした。

お知らせください。

+1

を試みることができますか? –

+0

xmlのエンコーディングについてご存知ですか? あなたのテーブルはutf8でもなければなりません。 – haltabush

+0

DBの照合順序を 'utf8_general_ci'などに設定しようとしましたか? – hohner

答えて

0

問題は、データベースがLatin1エンコーディングでのみデフォルトで動作することです。あなたはデータベースやテーブルを変更する(私はどちらか、おそらく両方)UTF8にエンコーディングを忘れてしまいます。

あなたは、 `)` $から来て、wharあなたが `はutf8_encodeを(必要があると思いますxml`ん

alter table TABLE_NAME charset utf8 

http://wolfram.kriesing.de/blog/index.php/2007/convert-mysql-db-to-utf8

関連する問題