1

Macのコマンドラインからこれを行うと(ターミナルのUTF-8とファイルもそうです):

tr -cd '[:print:]\n' < infile > outfile

Linux システムで同じコマンドを実行している場合とは異なる出力ファイルの結果が得られます (ターミナルでは UTF-8 で、ファイルもそうです)。

この理由は何ですか?

これは、Mac でコマンドを実行するときにまだ存在するサンプル文字です: š (文字はキャロン付きの拡張 ASCII 文字 0x9A/s です)。Linux でコマンドを実行すると、同じ文字が削除されます。

4

2 に答える 2

0

tr残念ながら、Karol C がソースで以下に示したように、 Unicode をまったくサポートしていないため、ファイルにマルチバイト シーケンスが含まれている場合、UTF-8 ファイルの Linux での動作は機能しません。

このデータベースによると、U+009A 文字は制御文字であり、印刷可能な文字ではありません。キャラクターの名前は「SINGLE CHARACTER INTRODUCER」。そのページにレンダリングされたグリフは、提供された説明と視覚的に一致しているように見えますが、Linux ではそうではありません。ただし、「s with a caron」という別の文字があります。Unicode は複雑な場合があります。

ウィキペディアによると、「š」(カロン付きの s) 文字は、実際には小文字の場合は U+0161、大文字の場合は U+0160 です。

これは、次のデータベースとも一致します。

于 2014-11-21T23:24:49.203 に答える