私のCentOSサーバーには、チェコ語の特殊文字(例えば、á、é、č、ž)を含むmysqlテーブルのダンプファイルがあります。 catを使用してファイルを表示すると、特殊文字が破損しています(例:áの代わりにĂĄ)。
ダンプでこれらの文字を変更してからデータベースに戻す必要があります。
私はいくつかの他のことを試しましたが、以下を含む何も動作しません。
cat c_schools | sed 's/ĂĄ/á/g' > c_schools
sedを使用して文字を次の式に置き換えましたが、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つの可能性があります。
端末は出力文字セットとして ISO-8859-2 を使用します。これにより、データ自体は正しくエンコードされますが、誤って表示される可能性があります。 ISO-8859-2などのUTF-8データを表示すると、予想される内容が表示されます。 UTF-8を処理できる端末および/またはエディタを試してください。 (ナノについてはよくわかりませんが、vimについてはわかりません。はいを使用している場合は、UTF-8を使用できます
set encoding=utf-8
。 )端末は出力文字セットとして UTF-8 を使用します。これにより、データ自体が正しくエンコードされません。すでにUTF-8データにもかかわらず、ISO-8859-2からUTF-8に「変換」されたデータです。
iconv
例えば。recode
iconv -f UTF8 -t ISO_8859-2 yourinputfile
どの端末プログラムを使用しており、出力は何ですかecho $LC_CTYPE
?