「文字コード」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→UTF-8: リンクを修正) |
Kusanaginoturugi (トーク | 投稿記録) (add TranslationStatus.) |
||
(同じ利用者による、間の15版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:ローカリゼーション]] |
+ | [[en:Character encoding]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
− | {{Related| |
+ | {{Related|ロケール}} |
{{Related|インプットメソッド}} |
{{Related|インプットメソッド}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [[Wikipedia: |
+ | [[Wikipedia:ja:文字コード|文字コード]]は、バイトを読み取り可能な文字に解釈するプロセスです。[[Wikipedia:UTF-8|UTF-8]] は 2009 年以降主要なエンコーディングとなっており、事実上の標準として推進されています[https://utf8everywhere.org/]。 |
== UTF-8 == |
== UTF-8 == |
||
11行目: | 12行目: | ||
=== ターミナル === |
=== ターミナル === |
||
+ | Most terminals use UTF-8 by default. However, some (e.g: Gnome-terminal, rxvt-unicode) need to be launched from a UTF-8 locale. To do that, set the codeset part of your locale to {{ic|.UTF-8}} and reload your session. See [[Locale#Setting_the_locale]] for instructions. |
||
− | 以下は UTF-8 をサポートするいくつかのターミナルのリストです。 |
||
+ | * [[xterm]] - Run with the argument {{ic|-u8}} or configure resource {{ic|xterm*utf8: 2}}. |
||
− | * gnustep-terminal |
||
− | * [[konsole]] |
||
− | * [[mlterm]] |
||
− | * [[rxvt-unicode]] |
||
− | * [[st]] |
||
− | * [[アプリケーション一覧/ユーティリティ#VTE ベース|VTE ベースターミナル]] |
||
− | * [[xterm]] - 引数として {{ic|-u8}} を付けて実行するか、リソース {{ic|xterm*utf8: 2}} を設定してください。 |
||
+ | === ユニコード文字の挿入 === |
||
− | ==== Gnome-terminal または rxvt-unicode ==== |
||
+ | [[アプリケーション一覧/ユーティリティ#テキスト入力]]を参照してください。 |
||
− | これらのアプリケーションは、UTF-8 ロケールから起動する必要があります。そうでないと UTF-8 サポートがなくなります。上記の指示に従って {{ic|en_US.UTF-8}} ロケール(またはお使いのローカルの UTF-8 代替)を有効にし、デフォルトのロケールに設定した後、再起動してください。 |
||
+ | * [[LibreOffice]] には、''挿入 > 特殊文字'' に組み込みのキャラクターマップがあり、文字ブロック、16 進、10 進エンコーディングが表示されます。 |
||
+ | * [[Xorg/キーボード設定#コンポーズキーの設定|Compose キー]]: XCompose を設定して特殊文字を挿入することができます。 |
||
+ | * [[Xorg/キーボード設定#AltGrの設定|AltGr]] を設定して、追加のキーボードレベルにアクセスし、ZWNJ や RTL マークなどの Unicode 制御文字を含む追加の文字を入力できます。 |
||
+ | == URL エンコード == |
||
− | == トラブルシューティング == |
||
+ | URI は US-ASCII 文字のみを受け入れ、非 ASCII 文字をエンコードするために[[Wikipedia:percent-encoding|パーセントエンコーディング]]を使用します。これにより、非常に長く、人間が読みづらい URI になることがあります。 |
||
− | {{Merge|Localization/Simplified Chinese#Garbled problem|[[#Incorrect encoding for extracted files]] で言及されているエンコーディングは中国語特有のもので、{{Pkg|mp3unicode}} についての 1 行の情報を持つ専用のセクションを設けることは適切ではないと思われます。このセクション全体をそこにマージすべきです。}} |
||
+ | Firefox では、{{ic|browser.urlbar.decodeURLsOnCopy}} フラグを {{ic|about:config}} で有効にするか、URL の先頭にスペースを挿入してからそのスペースを含めて選択し、コピーすることでデコードされた URL をコピーすることができます。ただし、この方法は Chromium では機能せず、同等のフラグもありません。代わりに、URL の末尾から {{ic|https://}} の部分を超えたところまで選択してコピーすることもできます。 |
||
− | * MP3 ファイルのエンコーディングの問題を修正するには、{{Pkg|mp3unicode}} を使用してください。 |
||
+ | コマンドラインで使用する場合、{{pkg|python-urllib3}} を使用して標準入力からエンコードされた URL を翻訳できます。 |
||
− | === 抽出されたファイルのエンコーディングが間違っている場合 === |
||
+ | $ python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read().strip()))" |
||
− | Windows の古いバージョン(XP、Vista、および 7)は、圧縮されたファイルの内容に対して異なるエンコーディングを使用します。展開するには、以下のコマンドを使用してください。 |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | エンコーディングの問題は、通常、異なるエンコーディングで通信している二つのプログラムが原因で発生します。通常、片方が UTF-8 を使用していないため、[[Wikipedia:mojibake|文字化け]] が発生します。 |
||
+ | |||
+ | {{Warning|ロケールのコードセットを {{ic|.UTF-8}} に設定することが強く推奨されます。そうしないと、UTF-8 から非 Unicode エンコーディングへの変換で情報が失われる可能性があります。}} |
||
+ | |||
+ | === 不正なアーカイブエンコーディング === |
||
+ | |||
+ | 古いバージョンの Windows (XP、Vista、7) では、エクスプローラーが特定のロケールで ZIP アーカイブを作成する際に異なるエンコーディングを使用します。正しく展開するには、ターゲットエンコーディングを指定して ''unzip -O'' を使用します。例として、CP936 は古いバージョンの Windows で一般的なエンコーディングです。 |
||
$ unzip -O CP936 ''file.zip'' |
$ unzip -O CP936 ''file.zip'' |
||
+ | |||
+ | 必要な文字セットが不明な場合は、{{ic|-l}} フラグを追加して抽出せずにドライランを行います: |
||
+ | |||
+ | $ unzip -lO SJIS ''file.zip'' |
||
+ | |||
+ | 日本語版の Windows は ZIP アーカイブを Shift-JIS でエンコードします。''shift-jis'' を使用します: |
||
+ | |||
+ | $ unzip -O shift-jis nihongo.zip |
||
+ | |||
+ | 中国語版の Windows は ZIP アーカイブを ''gbk'' でエンコードします: |
||
+ | |||
+ | $ unzip -O gbk ''file''.zip |
||
+ | |||
+ | あるいは、ターゲットエンコーディングを自動検出するために {{AUR|unzip-natspec}} を使用します。 |
||
+ | |||
+ | === 不正なファイル名エンコーディング === |
||
+ | |||
+ | {{Pkg|convmv}} を使用してエンコーディング変換を行います: |
||
+ | |||
+ | $ convmv -f ''SOURCE_ENCODING'' -t UTF-8 --notest --nosmart file |
||
+ | |||
+ | {{ic|--notest}} は移動せずにドライランを行うために使用されます。元のエンコーディングを {{ic|-f}} (例: 中国語の場合は {{ic|GBK}}) を使って特定した後、それを削除して移動操作を行います。なお、{{ic|--smart}} は既に UTF8 エンコードされている場合、変換をスキップします。サポートされているエンコーディングを確認するには {{ic|convmv --list}} を使用します。 |
||
+ | |||
+ | === 不正なファイルエンコーディング === |
||
+ | |||
+ | {{ic|iconv}} コマンドを使用して形式を変換します。例えば: |
||
+ | |||
+ | $ iconv -f ''SOURCE_ENCODING'' -t UTF-8 -o new-file origin-file |
||
+ | |||
+ | {{ic|-f}} は元のエンコーディングを指定し、{{ic|-t}} は出力エンコーディングを指定します。サポートされているエンコーディングをすべて照会するには {{ic|iconv -l}} を、出力ファイルを指定するには {{ic|-o}} を使用します。 |
||
+ | |||
+ | ==== Vim ==== |
||
+ | |||
+ | ロケールが UTF-8 の場合、他の文字エンコードされたファイルを開くと文字化けすることがあります。''vimrc'' に以下のような行を追加してフォールバックを設定できます: |
||
+ | |||
+ | set fileencodings=utf8,cp936,gb18030,big5 |
||
+ | |||
+ | または、{{ic|1=:set fileencoding=ansi}} を明示的に設定することもできます。Vim は ''iconv'' を介して自動的に変換を行います。{{ic|:h charset-conversion}} を参照してください。 |
||
+ | |||
+ | === 不正な MP3 ID3 タグエンコーディング === |
||
+ | MP3 ファイルのタグを変更するには、{{Pkg|python-mutagen}} または {{Pkg|mp3unicode}} を使用して変換します: |
||
+ | |||
+ | $ mid3iconv -e ''SOURCE_ENCODING'' XXX.mp3 |
||
+ | |||
+ | ファイルの変更を望まない場合は、メディアプレーヤーの動作を調整できます。[[GStreamer]] をバックエンドとして使用するプレーヤー(例: [[Rhythmbox]] や totem)では、[[環境変数]]を設定します: |
||
+ | |||
+ | export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030 |
||
+ | export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030 |
||
+ | |||
+ | Beep メディアプレーヤーでは、{{ic|preferences > plugins > media > title >}} で MPEG Audio プラグインを選択し、{{ic|Disable ID3v2 and Convert non-UTF8 ID3 tags to UTF8}} にチェックを入れ、適切なエンコーディングを選択します。 |
||
+ | |||
+ | Quod Libet プレーヤーはタグ編集と ID3v2 エンコーディングの設定をサポートしています。{{ic|~/.quodlibet/config}} に設定できます: |
||
+ | |||
+ | {{hc|~/.quodlibet/config|2= |
||
+ | ... |
||
+ | id3encoding = gbk |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | {{Note|Quod Libet はデフォルトで utf8 エンコーディングをサポートしています。}} |
||
+ | |||
+ | === 不正なマウントエンコーディング === |
||
+ | |||
+ | 一般的に、マウントされた文字セットはロケールとは異なりますが、[[fstab]] を修正することで設定できます。ロケールが utf8 の場合は、以下のように行を修正します: |
||
+ | |||
+ | {{hc|/etc/fstab|2= |
||
+ | ... |
||
+ | /dev/sdxx /media/win ntfs defaults,iocharset=utf8 0 0 |
||
+ | }} |
||
+ | |||
+ | ロケールが GBK の場合は、以下のようにすべきです: |
||
+ | |||
+ | {{hc|/etc/fstab|2= |
||
+ | ... |
||
+ | /dev/sdxx /media/win ntfs defaults,iocharset=cp936 0 0 |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | === 不正な Samba エンコーディング === |
||
+ | |||
+ | Arch を [[Samba]] サーバーとして使用する場合、{{ic|/etc/samba/smb.conf}} に次の行を追加することで、Windows クライアントの文字化けの問題を解決できます: |
||
+ | |||
+ | {{hc|/etc/samba/smb.conf|2= |
||
+ | ... |
||
+ | unix charset=gb2312 |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | === 不正な FTP エンコーディング === |
||
+ | |||
+ | UTF8 ロケールを使用している場合、非 Unicode エンコードされたサーバーからダウンロードしたファイル名が文字化けすることがあります。lftp では、{{ic|.lftp/rc}} に次の設定を行います: |
||
+ | |||
+ | {{hc|.lftp/rc| |
||
+ | ... |
||
+ | set ftp:charset "gbk" |
||
+ | set file:charset "UTF-8" |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | gftp では、{{ic|.gftp/gftprc}} に次の設定を行うことができます: |
||
+ | |||
+ | {{hc|.gftp/gftprc|2= |
||
+ | ... |
||
+ | remote_charsets=gb2312 |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | ただし、ダウンロードしたファイル名が依然として文字化けしている場合は、パッチを適用してコンパイルする必要があります。パッチのアドレスは: https://www.teatime.com.tw/%7Etommy/linux/gftp_remote_charsets.patch です。 |
||
+ | |||
+ | {{TranslationStatus|Character encoding|2024-08-17|814093}} |
2024年8月17日 (土) 19:10時点における最新版
文字コードは、バイトを読み取り可能な文字に解釈するプロセスです。UTF-8 は 2009 年以降主要なエンコーディングとなっており、事実上の標準として推進されています[1]。
目次
UTF-8
ターミナル
Most terminals use UTF-8 by default. However, some (e.g: Gnome-terminal, rxvt-unicode) need to be launched from a UTF-8 locale. To do that, set the codeset part of your locale to .UTF-8
and reload your session. See Locale#Setting_the_locale for instructions.
- xterm - Run with the argument
-u8
or configure resourcexterm*utf8: 2
.
ユニコード文字の挿入
アプリケーション一覧/ユーティリティ#テキスト入力を参照してください。
- LibreOffice には、挿入 > 特殊文字 に組み込みのキャラクターマップがあり、文字ブロック、16 進、10 進エンコーディングが表示されます。
- Compose キー: XCompose を設定して特殊文字を挿入することができます。
- AltGr を設定して、追加のキーボードレベルにアクセスし、ZWNJ や RTL マークなどの Unicode 制御文字を含む追加の文字を入力できます。
URL エンコード
URI は US-ASCII 文字のみを受け入れ、非 ASCII 文字をエンコードするためにパーセントエンコーディングを使用します。これにより、非常に長く、人間が読みづらい URI になることがあります。
Firefox では、browser.urlbar.decodeURLsOnCopy
フラグを about:config
で有効にするか、URL の先頭にスペースを挿入してからそのスペースを含めて選択し、コピーすることでデコードされた URL をコピーすることができます。ただし、この方法は Chromium では機能せず、同等のフラグもありません。代わりに、URL の末尾から https://
の部分を超えたところまで選択してコピーすることもできます。
コマンドラインで使用する場合、python-urllib3 を使用して標準入力からエンコードされた URL を翻訳できます。
$ python3 -c "import sys; from urllib.parse import unquote; print(unquote(sys.stdin.read().strip()))"
トラブルシューティング
エンコーディングの問題は、通常、異なるエンコーディングで通信している二つのプログラムが原因で発生します。通常、片方が UTF-8 を使用していないため、文字化け が発生します。
不正なアーカイブエンコーディング
古いバージョンの Windows (XP、Vista、7) では、エクスプローラーが特定のロケールで ZIP アーカイブを作成する際に異なるエンコーディングを使用します。正しく展開するには、ターゲットエンコーディングを指定して unzip -O を使用します。例として、CP936 は古いバージョンの Windows で一般的なエンコーディングです。
$ unzip -O CP936 file.zip
必要な文字セットが不明な場合は、-l
フラグを追加して抽出せずにドライランを行います:
$ unzip -lO SJIS file.zip
日本語版の Windows は ZIP アーカイブを Shift-JIS でエンコードします。shift-jis を使用します:
$ unzip -O shift-jis nihongo.zip
中国語版の Windows は ZIP アーカイブを gbk でエンコードします:
$ unzip -O gbk file.zip
あるいは、ターゲットエンコーディングを自動検出するために unzip-natspecAUR を使用します。
不正なファイル名エンコーディング
convmv を使用してエンコーディング変換を行います:
$ convmv -f SOURCE_ENCODING -t UTF-8 --notest --nosmart file
--notest
は移動せずにドライランを行うために使用されます。元のエンコーディングを -f
(例: 中国語の場合は GBK
) を使って特定した後、それを削除して移動操作を行います。なお、--smart
は既に UTF8 エンコードされている場合、変換をスキップします。サポートされているエンコーディングを確認するには convmv --list
を使用します。
不正なファイルエンコーディング
iconv
コマンドを使用して形式を変換します。例えば:
$ iconv -f SOURCE_ENCODING -t UTF-8 -o new-file origin-file
-f
は元のエンコーディングを指定し、-t
は出力エンコーディングを指定します。サポートされているエンコーディングをすべて照会するには iconv -l
を、出力ファイルを指定するには -o
を使用します。
Vim
ロケールが UTF-8 の場合、他の文字エンコードされたファイルを開くと文字化けすることがあります。vimrc に以下のような行を追加してフォールバックを設定できます:
set fileencodings=utf8,cp936,gb18030,big5
または、:set fileencoding=ansi
を明示的に設定することもできます。Vim は iconv を介して自動的に変換を行います。:h charset-conversion
を参照してください。
不正な MP3 ID3 タグエンコーディング
MP3 ファイルのタグを変更するには、python-mutagen または mp3unicode を使用して変換します:
$ mid3iconv -e SOURCE_ENCODING XXX.mp3
ファイルの変更を望まない場合は、メディアプレーヤーの動作を調整できます。GStreamer をバックエンドとして使用するプレーヤー(例: Rhythmbox や totem)では、環境変数を設定します:
export GST_ID3_TAG_ENCODING=GBK:UTF-8:GB18030 export GST_ID3V2_TAG_ENCODING=GBK:UTF-8:GB18030
Beep メディアプレーヤーでは、preferences > plugins > media > title >
で MPEG Audio プラグインを選択し、Disable ID3v2 and Convert non-UTF8 ID3 tags to UTF8
にチェックを入れ、適切なエンコーディングを選択します。
Quod Libet プレーヤーはタグ編集と ID3v2 エンコーディングの設定をサポートしています。~/.quodlibet/config
に設定できます:
~/.quodlibet/config
... id3encoding = gbk ...
不正なマウントエンコーディング
一般的に、マウントされた文字セットはロケールとは異なりますが、fstab を修正することで設定できます。ロケールが utf8 の場合は、以下のように行を修正します:
/etc/fstab
... /dev/sdxx /media/win ntfs defaults,iocharset=utf8 0 0
ロケールが GBK の場合は、以下のようにすべきです:
/etc/fstab
... /dev/sdxx /media/win ntfs defaults,iocharset=cp936 0 0 ...
不正な Samba エンコーディング
Arch を Samba サーバーとして使用する場合、/etc/samba/smb.conf
に次の行を追加することで、Windows クライアントの文字化けの問題を解決できます:
/etc/samba/smb.conf
... unix charset=gb2312 ...
不正な FTP エンコーディング
UTF8 ロケールを使用している場合、非 Unicode エンコードされたサーバーからダウンロードしたファイル名が文字化けすることがあります。lftp では、.lftp/rc
に次の設定を行います:
.lftp/rc
... set ftp:charset "gbk" set file:charset "UTF-8" ...
gftp では、.gftp/gftprc
に次の設定を行うことができます:
.gftp/gftprc
... remote_charsets=gb2312 ...
ただし、ダウンロードしたファイル名が依然として文字化けしている場合は、パッチを適用してコンパイルする必要があります。パッチのアドレスは: https://www.teatime.com.tw/%7Etommy/linux/gftp_remote_charsets.patch です。