1

わかりました、これに対する解決策を見つけることができなかったので、誰かが助けてくれることを願っています.

データベースでは、顧客は次のような異なる文字セットから文字データをインポートまたは追加することができました。

  <E2><80><99>

これはUTF-16だと思います。

私のスクリプトの XML 出力は、このデータが原因でエラーをスローしています (データベースから「説明」フィールドなどの文字列を取得し、XML ファイルを作成します)。

XML 解析エラー: 行番号 20、列 50 は整形式ではありません。

<80><99> のように、より長い他の 16 進数があります (単なる例です。これが実際の文字かどうかはわかりません)。

XML ファイルを有効にして、文字セットをダウンスケールするか、次のように UTF-32 を使用するようにするにはどうすればよいですか。

  AddType "application/xml; charset=UTF-32" xml  (in .htaccess file along with filesmatch .xml)


  <?xml version='1.0' encoding='UTF-32' ?>   (placed in head of xml file)
4

1 に答える 1

0

それが何であれ:UTF-8、-16、または-32-出力で他のエンコーディングを選択する場合は、-異なる場合は-最初に出力用に入力を再エンコードする必要があります。

質問の中で、入力エンコーディングが正確に何であるかわからないと明確に述べています。エンコーディングはメタ情報であるため、これを明確にする必要があります。文字列を処理するには、それを正しく知る必要があります。共有した内容から、入力はUTF-8でエンコードされているように見えます。これを確認する必要があります(PHPで不正な形式のutf-8文字列を検出する方法は?)。

次のことは、その不正な形式はエンコーディングの問題を意味してはならないということです(しかしそれは可能です)。問題の原因を共有しない限り(理想的にはテキスト形式の隣に16進ダンプがあります)、私が言う現在の情報について与えることができるアドバイスはあまりありません。

于 2012-05-02T10:31:20.950 に答える