nodejs / nodejs/docker-node

Set an UTF-8 locale as default, not POSIX

Đang mở
#1,839 1 bình luận 2 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Dockerfile
Star
8.6k
Fork
2k
Merge trung bình
10 giờ 19 phút
Pull request đã merge (30 ngày)
16

Mô tả

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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Kiểm tra cách Node image cấu hình /etc/environment, sau đó chạy các lệnh đã nêu docker run --rm node:latest localelocale -a để xác nhận các locale khả dụng. Đặt LC_CTYPE mặc định thành C.UTF-8 và xác minh rằng ví dụ Unicode với wc -m báo cáo một ký tự mà không truyền giá trị ghi đè môi trường.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
docker
Lĩnh vực
infrastructure
Loại issue
Tính năng
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.