2016-06-01 15 views
0

私のデータベースの一部のデータが間違ったエンコーディングで挿入されています。誤ってエンコードされたUnicode文字列を修正してください

私はデータをフェッチし、それをダンプするとき、私は次の出力を得る:それを修正するためにどのように

$VAR1 = "\x{fffd}U/mL" 

を? Perlでdecode_utf8decode_utf8を試しました。

+4

この文字列は何であったはずですか? 'U + FFFD'は無効なUnicode文字の代わりに*置換文字* whisが使用されているので、あなたは何らかの情報が失われているように見えます。 – Borodin

+0

はい:これに対応して入出力文字が必要です – ssr1012

+2

これは遅すぎるかもしれません。情報が失われる可能性があります。 1)これはどのようなデータベースですか? 2)あなたは 'use Data :: Dumperから何を得るのですか?ローカルの$ Data :: Dumper :: Useqq = 1; print(Dumper($ row)); 'データベースからこの値をフェッチするとき?このデバッグを行うときに、mysql_enable_utf8オプションなどを使用していないことを確認してください。 – ikegami

答えて

2

decode_utf8は、正しいオクテットがあることを前提としています。間違ったデータから始めると、それは修正されません。一般に、これは非常に多くの方法でデータが混乱する可能性があるため、高度に自動化できないものです。

関連する問題