• ベストアンサー

Malformed UTF-8 character

あるWebシステムで、エラーログに「Malformed UTF-8 character」が大量に出力されています。 意味はわかるのですが、どんな文字列がエラーになっているか分からないので、デバッグできず困っています。 # 全てのアクセスで必ず通るロジックなので、入力文字列を無条件にダンプするわけにも行きません。 もし、「Malformed UTF-8 character」になる見込みの文字列だけダンプするなど、効率的なデバッグ手段があれば、教えていただけますでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.1

Malformed UTF-8 character というメッセージは、いわゆる「フラグ付き内部文字列 (UTF-8)」への変換が適切に行われていないことを示しています。元の文字列の文字コードの指定誤りが、主な原因となります。メッセージの末尾には「ファイル名と行番号」が示されているはずですので、それを手がかりに調べていけばよいと思います。

entree
質問者

お礼

ご回答ありがとうございます。 エラーの意味は既に理解していて、ログに出力されていたファイル行を確認したものの、 ブラウザに返すほとんど全てのアウトプット文字列が通るロジックだったため(1回の 画面要求で数千回通る箇所)デバッグできずに困っていました。 結局、たまたま別件でデータベース内のあるテーブルのデータをチェックしていた時に、 ユーザによって登録されたデータの一部(ほんの数件)が文字化けしていることを発見し、 そのレコードを削除したところエラーは出なくなりました。

関連するQ&A