CentOSのmysqlダンプでの発音区別符号の修正

CentOSのmysqlダンプでの発音区別符号の修正

私のCentOSサーバーには、チェコ語の特殊文字(例えば、á、é、č、ž)を含むmysqlテーブルのダンプファイルがあります。 catを使用してファイルを表示すると、特殊文字が破損しています(例:áの代わりにĂĄ)。

ダンプでこれらの文字を変更してからデータベースに戻す必要があります。

私はいくつかの他のことを試しましたが、以下を含む何も動作しません。

  • cat c_schools | sed 's/ĂĄ/á/g' > c_schoolssedを使用して文字を次の式に置き換えましたが、unterminated s commandエラーが発生しました。
  • VIMでファイルを開いて手動で回復しましたが、VIMでチェック文字を入力できません。
  • NANOでファイルを開いて手動で修正しましたが、NANOでファイル操作がまったくできないようです(カーソルに移動してもテキストが変わります)。

コメントで示唆したように、VIMでファイルを再度開き、次のコマンドを試しました。

  • set encoding=utf-8(まったく効果がありません。)
  • set termencoding=iso8859-2(以降、出力ははるかに良くなりましたが、č、e、またはšの代わりに?などの一部の文字はまだ間違って表示されます。)
  • :set fileencoding(出力fileencoding=utf-8

FTP経由でWindowsコンピュータにファイルをコピーし、標準のテキストエディタ(Notepad ++)で開くと、正しく表示され使用されているエンコーディングはBOMなしのUTF-8です。

答え1

これは、ISO-8859-2で示されるUnicode(UTF-8)データと同じです。本質的に2つの可能性があります。

  1. 端末は出力文字セットとして ISO-8859-2 を使用します。これにより、データ自体は正しくエンコードされますが、誤って表示される可能性があります。 ISO-8859-2などのUTF-8データを表示すると、予想される内容が表示されます。 UTF-8を処理できる端末および/またはエディタを試してください。 (ナノについてはよくわかりませんが、vimについてはわかりません。はいを使用している場合は、UTF-8を使用できますset encoding=utf-8。 )

  2. 端末は出力文字セットとして UTF-8 を使用します。これにより、データ自体が正しくエンコードされません。すでにUTF-8データにもかかわらず、ISO-8859-2からUTF-8に「変換」されたデータです。iconv例えば。recodeiconv -f UTF8 -t ISO_8859-2 yourinputfile

どの端末プログラムを使用しており、出力は何ですかecho $LC_CTYPE

関連情報