Set an UTF-8 locale as default, not POSIX
オープン
まだ誰も着手していません。
- 主要言語
- Dockerfile
- スター
- 8.6k
- フォーク
- 2k
- 平均マージ
- 10時間 19分
- マージ済み PR(30日)
- 16
説明
Problem
The default locale of the node image is POSIX:
$ docker run --rm node:latest locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
node:19 has the following locales built-in:
$ docker run --rm node:19 locale -a
C
C.UTF-8
POSIX
The POSIX locale doesn't recognize UTF-8 (wc -m counts characters, not bytes).
$ docker run --rm node:latest bash -c 'echo -n 💩 | wc -m'
4
$ docker run --rm node:latest bash -c 'echo -n 💩 | LC_CTYPE=C.UTF-8 wc -m'
1
It is possible to manually enable C.UTF-8:
$ docker run --rm --env LC_CTYPE=C.UTF-8 node:latest bash -c 'echo -n 💩 | wc -m'
1
However in 2023, who doesn't need a locale supporting Unicode? ASCII is a bad default as it doesn't match a 2023 development environment.
Solution
Set LC_CTYPE=C.UTF-8 in the node image. Probably in file /etc/environment.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
Node image が /etc/environment をどのように設定しているかを調べ、続いて報告されたコマンド docker run --rm node:latest locale と locale -a を実行して、利用可能なロケールを確認します。デフォルトの LC_CTYPE を C.UTF-8 に設定し、環境変数の上書きを渡さずに、wc -m の Unicode の例が 1 文字を報告することを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- docker
- 領域
- infrastructure
- issue の種類
- 機能追加
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 活発さ
- 静か
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 55/100