在linux服务器上用headless firefox打开中文网页,字体乱码问题

本文介绍了解决Linux服务器不支持中文字体的问题方法。通过从Windows复制中文字体库,将其打包并上传至Linux服务器指定路径,完成字体安装。最后验证字体是否正确加载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因:linux服务器不支持中文字体

解决办法:将windows上的中文字体库复制到linux上

1.在win10中,将C:\Windows\Fonts上的字体文件(ttc/ttf)复制并打包成压缩文件fonts.zip,可选择自己需要的字体

2.将fonts.zip上传到linux服务器/usr/share/fonts/truetype路径下并解压

3.fc-list :lang=zh查看,若存在“宋体”等字体,则安装成功,再次打开网页即可显示中文字体

### Linux 上使用 Selenium 打开网页中文显示乱码的解决方案 在 CentOS 或其他 Linux 发行版上运行 Selenium 并通过 ChromeDriver 截图时,如果遇到中文字符呈现为方框或其他乱码的情况,通常是因为缺少必要的字体支持或编码配置不正确。以下是具体的解决方法: #### 1. 安装中文字体 为了使浏览器能够正常渲染中文字符,需要安装相应的中文字体包。对于 CentOS 7,可以执行以下命令来安装常用中文字体: ```bash yum install -y fontconfig wqy-microhei-fonts wqy-zenhei-fonts ``` 这一步会安装 WenQuanYi Micro Hei 和 Zen Hei 字体[^2]。 #### 2. 更新字体缓存 安装完成后,更新系统的字体缓存以确保新字体被识别: ```bash fc-cache -fv ``` #### 3. 配置 X Font Path(适用于无图形界面环境) 如果是在无头模式下运行 Chrome,则可能还需要额外配置 X Font 路径。可以通过 `ttmkfdir` 工具生成所需的文件目录索引: ```bash ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir \ -o /usr/share/X11/fonts/TTF/fonts.scale mkfontscale /usr/share/X11/fonts/TTF/ mkfontdir /usr/share/X11/fonts/TTF/ ``` 此操作有助于修复某些情况下因字体路径未正确定位而导致的乱码问题[^3]。 #### 4. 设置正确的区域和语言环境变量 确保系统设置了合适的 locale 来处理 UTF-8 编码的数据流。编辑 `/etc/environment` 文件并加入以下内容: ```plaintext LANG="zh_CN.UTF-8" LC_ALL="zh_CN.UTF-8" ``` 之后重启服务或者重新加载 shell 环境以便生效。 #### 5. 启动 Chrome 的时候指定参数 当初始化 WebDriver 实例的时候,传递一些特定选项给 Chromium 浏览器实例可以帮助改善兼容性和表现形式。例如启用 GPU 加速绘图功能以及定义用户代理字符串等都可以尝试调整看效果如何变化。 ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--no-sandbox') # 绕过操作系统安全限制 options.add_argument('--disable-dev-shm-usage') # 解决资源不足的问题 options.add_argument("--headless") # 如果不需要GUI的话开启无头浏览模式 prefs = {"intl.accept_languages": 'zh-CN,zh'} # 设定接受的语言偏好为简体中文 options.add_experimental_option('prefs', prefs) driver = webdriver.Chrome('/path/to/chromedriver', options=options) ``` 完成上述步骤后再次测试截图功能应该就不会再看到那些奇怪的小盒子代替汉字的现象了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值