0
私のデータベースの一部のデータが間違ったエンコーディングで挿入されています。誤ってエンコードされたUnicode文字列を修正してください
私はデータをフェッチし、それをダンプするとき、私は次の出力を得る:それを修正するためにどのように
$VAR1 = "\x{fffd}U/mL"
を? Perlでdecode_utf8
、decode_utf8
を試しました。
私のデータベースの一部のデータが間違ったエンコーディングで挿入されています。誤ってエンコードされたUnicode文字列を修正してください
私はデータをフェッチし、それをダンプするとき、私は次の出力を得る:それを修正するためにどのように
$VAR1 = "\x{fffd}U/mL"
を? Perlでdecode_utf8
、decode_utf8
を試しました。
decode_utf8
は、正しいオクテットがあることを前提としています。間違ったデータから始めると、それは修正されません。一般に、これは非常に多くの方法でデータが混乱する可能性があるため、高度に自動化できないものです。
この文字列は何であったはずですか? 'U + FFFD'は無効なUnicode文字の代わりに*置換文字* whisが使用されているので、あなたは何らかの情報が失われているように見えます。 – Borodin
はい:これに対応して入出力文字が必要です – ssr1012
これは遅すぎるかもしれません。情報が失われる可能性があります。 1)これはどのようなデータベースですか? 2)あなたは 'use Data :: Dumperから何を得るのですか?ローカルの$ Data :: Dumper :: Useqq = 1; print(Dumper($ row)); 'データベースからこの値をフェッチするとき?このデバッグを行うときに、mysql_enable_utf8オプションなどを使用していないことを確認してください。 – ikegami