wc -c
エンコーディングに関して実際の文字を解釈せず、愚かなバイトカウントを行うように見えます。
実際の文字数を取得するにはどうすればよいですか?
使用-m
または--chars
オプション。
例 (text
ファイルには 2 つの韓国語の文字と改行が含まれています):
falsetru@jmlee12:~$ cat text
안녕
falsetru@jmlee12:~$ wc -c text
7 text
falsetru@jmlee12:~$ wc -m text
3 text
によるとwc(1)
:
-c, --bytes print the byte counts -m, --chars print the character counts
char
文字、 s、およびバイトを混同しないでください。バイトは 8 ビット長で-c
、ファイル内のバイト数をカウントします。char
多くのプログラミング言語の A も 8 ビット長です。これが、バイト数のカウントに-c
! ファイル内にある特定のアルファベットの文字 (char) の数を数えたい場合は、使用されている文字のエンコーディングを何らかの方法で指定する必要があり、場合によっては、そのエンコーディングが 1 つの文字に 1 バイト以上を使用することがあります。 . のマニュアルを読むと、wc
現在-m
のロケール (おおよその言語/文字セット設定) を使用してファイルをデコードし、文字数をカウントすることがわかります。