解决docker容器启动的chrome 浏览器首选或默认语言修改
要在 Docker 容器中的 Chrome 浏览器中设置中文语言,你可以通过在容器启动时设置浏览器的启动参数来实现。以下是一个示例的 Docker 命令:
docker run -d -p 4444:4444 \
-e "LANGUAGE=zh_CN:zh" \
selenium/standalone-chrome:latest
在这个示例中,我们使用了 selenium/standalone-chrome 镜像作为基础镜像,并通过设置环境变量 -e 来设置中文语言。LANGUAGE 环境变量的值都被设置为 zh_CN.UTF-8,从而将容器中的首选语言设置为中文。(如需修改为英文,对应替换为en_US)
浏览器启动后查看首选语言
LANG LANGUAGE LC_ALL环境变量区别
- LANG(或 LC_*):LANG 是最基本的本地化环境变量之一。它用于设置默认的本地化参数,包括字符编码、日期时间格式、货币符号等。如果没有显式设置其他本地化环境变量,程序通常会使用 LANG 的值作为默认设置。例如,LANG=en_US.UTF-8 将设置本地化为美国英语,使用 UTF-8 编码。
- LANGUAGE:LANGUAGE 是一个特定于某些系统的环境变量,在某些Unix系统中用于设置用户首选语言。它通常是一个以冒号分隔的语言列表,按优先级排列。例如,LANGUAGE=en_US:fr_FR 表示首选英语,如果不可用,则使用法语。
- LC_ALL:LC_ALL 是一个更高级别的环境变量,用于覆盖所有其他本地化环境变量的值。当设置 LC_ALL 时,它会覆盖 LANG 和其他 LC_* 变量的设置,以确保程序在特定的地区或语言下以一致的方式运行。如果设置了 LC_ALL,则忽略其他本地化环境变量的值。这使得 LC_ALL 具有最高的优先级。
总结:
- LANG 是最基本的本地化环境变量,用于设置默认的本地化参数。
- LANGUAGE 是某些系统特定的环境变量,用于设置用户首选语言。
- LC_ALL 是更高级别的环境变量,用于覆盖所有其他本地化环境变量的值,确保程序以一致的方式运行。
在设置本地化环境变量时,建议优先使用 LANG,除非你有特定的需求需要使用 LANGUAGE 或 LC_ALL。
截止到该步骤,问题已解决。如还未解决,可继续阅读。后续内容为相关背景知识补充
进入容器查看查看字符集
docker exec -it <container_id> /bin/bash
locale
locale -a
locale
- locale 命令用于显示当前系统的语言环境设置。
- 当你在终端中运行 locale 命令时,它将输出一系列与语言、字符编码、日期和时间格式等相关的环境变量的值。
- 例如,LC_CTYPE 表示字符分类和转换规则,LC_TIME 表示日期和时间格式,LANG 表示默认语言环境等。
locale -a
- locale -a 命令用于列出系统上可用的所有语言环境。
- 运行 locale -a 命令将输出已安装在系统上的语言环境的列表。
- 每个语言环境由一个标识符表示,通常是由语言和地区/国家的缩写组成的组合,例如 en_US 表示英语(美国),zh_CN 表示中文(中国)等。
- 这些语言环境可以用于设置系统的默认语言、字符编码以及日期和时间格式。
为何locale -a 未查看到支持中文编码的语言环境,浏览器还能正确加载出中文页面?
- 语言环境未安装:你的操作系统可能没有安装支持中文编码的语言环境。locale -a 命令只会列出已经在系统中安装的语言环境。
- 非 POSIX 语言环境:locale -a 命令只显示 POSIX 兼容的语言环境。如果你的系统上存在非 POSIX 的中文语言环境,它们可能不会显示在 locale -a 的输出中。
- 浏览器独立的语言设置:浏览器通常具有自己的语言设置和字符编码支持机制,不完全依赖于操作系统的语言环境设置。浏览器可以根据网页的语言设置和字符编码,自动加载适当的字体和字符集,以确保正确显示中文页面。
由于浏览器具有独立的语言支持机制,即使操作系统的语言环境不支持中文编码,浏览器仍然可以正确加载和显示中文页面。浏览器会根据网页的语言设置以及浏览器自身的字符编码支持,选择适合的字体和字符集来渲染中文内容。文章来源:https://www.toymoban.com/news/detail-766189.html
因此,即使 locale 命令未显示支持中文编码的语言环境,浏览器仍然可以正常显示中文页面。这是因为浏览器具有自己的语言环境和字符编码处理能力。文章来源地址https://www.toymoban.com/news/detail-766189.html
常见的编码格式
- C.UTF-8
C 是一种语言环境设置,也称为 C 语言环境或默认的 C 语言环境。
UTF-8 是一种字符编码,用于支持广泛的字符集。
C.UTF-8 设置将使用 C 语言环境和 UTF-8 字符编码。 - en_US.UTF-8
en_US 表示英语(美国)的语言环境。
UTF-8 是一种字符编码,用于支持广泛的字符集。
en_US.UTF-8 设置将使用英语(美国)语言环境和 UTF-8 字符编码。 - zh_CN.UTF-8
zh_CN 表示中文(中国)的语言环境。
UTF-8 是一种字符编码,用于支持广泛的字符集。
zh_CN.UTF-8 设置将使用中文(中国)语言环境和 UTF-8 字符编码。 - POSIX
POSIX 字符编码是一种基本的字符编码方案,通常用于 POSIX 兼容的操作系统和环境中。
它使用 ASCII 字符集的子集,该子集包含了常见的美国英语字符和控制字符,总共有 128 个字符。
POSIX 字符编码不支持国际化字符集和多字节字符,因此它的功能相对有限
POSIX 相关说明
- POSIX 兼容的语言环境不包括特定的地域设置,如 “zh_CN.UTF-8”。
- POSIX 是一组操作系统接口标准,旨在提供跨平台的应用程序兼容性,但它并不关注具体的语言或地域设置。
常见的 POSIX 兼容的语言环境
- C 或 POSIX:这是默认的 POSIX 兼容语言环境,通常用于提供最小限度的字符集支持和字符编码功能。
- en_US 或 en_US.UTF-8:美国英语(英语-美国)的 POSIX 兼容语言环境,使用 UTF-8 字符编码。
- C.UTF-8:基于 C 语言环境的 UTF-8 字符编码的 POSIX 兼容语言环境。
- POSIX.UTF-8:基于 POSIX 标准的 UTF-8 字符编码的 POSIX 兼容语言环境。
在 GitLab CI/CD 中,可以使用 variables 关键字来配置对应环境变量,修改.gitlab-ci.yml 文件
services:
alias: selenium-chrome
variables:
LANGUAGE: "zh_CN:zh"
到了这里,关于【docker 容器内设置谷歌浏览器首选或默认语言】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!