当前位置: 首页 > news >正文

解决一个LANG引起beeline导出中文乱码的问题

问题

机缘巧合下,两台一模一样的 Linux (Centos)locale=zh_CN.UTF-8,出现 Java 调用 beeline 输出csv乱码。

这源自一起生产环境用户反馈的故障。

分析

设置不同的 LANG 调用 beeline 查看输出结果:

=== LANG=zh_CN.UTF-8 输出 ===
_u1.id,_u1.name,_u1.status,_u1.query_date
??????ID,????????????,????????????,2026-03-04
001,??????,??????,2026-03-04
002,??????,??????,2026-03-04=== LANG=en_US.UTF-8 输出 ===
_u1.id,_u1.name,_u1.status,_u1.query_date
测试ID,测试名称,正常状态,2026-03-04
001,张三,在线,2026-03-04
002,李四,离线,2026-03-04=== LANG=C.UTF-8 输出 ===
_u1.id,_u1.name,_u1.status,_u1.query_date
测试ID,测试名称,正常状态,2026-03-04
001,张三,在线,2026-03-04
002,李四,离线,2026-03-04=== 检查文件编码 ===
/tmp/test_zh_cn.csv:  ASCII text
/tmp/test_en_us.csv:  UTF-8 Unicode text
/tmp/test_c_utf8.csv: UTF-8 Unicode text

研究过程

  1. 检查locale:每一台locale一样
  2. 检查JVM:-Dfile.encoding=UTF-8 一样
  3. 检查 /proc/<pid>/environ:LANG不一样
  4. 解决,在JVM进程的环境变量中 export LANG=en_US.UTF-8 解决。

反思

  1. LANG 按理说完全不影响Java
  2. 已经2062年了不会存在 Charset.defaultCharset 收到环境变量的问题
  3. 初学者都知道编译和运行环境都有 file.encoding=UTF-8
  4. 作为高级工程师,并不会忘记给 csv 加 UTF-8 BOM

回过头来再看:
locale 直接输出:

Cannot set LC_ALL to default locale: No such file or directory

虽然明显,但是人们都会忽略不见的吧

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

结论

locale -a 检查发现,系统没有安装这个 zh_CN.UTF-8 的locale,因此 beeline 或者 Java 进程在某个底层代码里面 set locale的时候,发生回退了。

http://www.jsqmd.com/news/446752/

相关文章:

  • c#开发Fastreport-Avalonia版本在ubuntu-linux下的打印程序
  • 2026冲压件厂家评测:国内做得好的实力厂家推荐,冲压件直销厂家选哪家宏罡通用设备层层把关品质优 - 品牌推荐师
  • 小程序快速开发平台有哪些?小程序第三方开发平台评测 - 码云数智
  • 国内优质TWSNS气源处理器源头厂家——广州邢海机电有限公司方案推荐,,TWSNS气源处理器直销厂家怎么选择 - 品牌推荐师
  • 从“救火队“到“预言家“:2026安全运营中心的智能进化论
  • 如何开发微信小程序,怎么自己做小程序 - 码云数智
  • 2026年北京海淀/朝阳/昌平房产继承律师榜单测评:从经验到口碑的选型指南 - 小白条111
  • 《构建之法》的阅读和提问
  • openclaw 问题定位和修复
  • 网站建设多少钱?主流建站方式及费用详解 - 码云数智
  • Omnissa Horizon 8 2512.1 (8.17.1) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件
  • 制作微信商城小程序要多少费用 - 码云数智
  • window从Microsoft 账户切换到本地帐号之后清理microsoft账号的步骤
  • 深入解析:粉末压机领域的实力源头厂家,伺服油压机/平板油压机/电子压床/伺服压装机/伺服热压机,粉末压机厂商排行 - 品牌推荐师
  • Omnissa Unified Access Gateway 2512.1 - 远程安全的应用程序访问
  • 2026年绩效管理咨询公司深度测评:基于战略解码与落地能力的五维战力解析 - 品牌推荐
  • 小程序制作平台哪个好?码云数智、有赞、微盟深度解析 - 码云数智
  • 计算机毕业设计springboot在线教育平台 基于SpringBoot的数字化远程教学管理系统 SpringBoot框架下的智慧云课堂服务平台
  • [特殊字符] NCT 技术博客系列 - 18 篇完整作品集(12 万字长文)
  • XMind 2026思维导图中文版下载安装保姆级教程
  • 2026年宠物内科医生推荐的宠物内科保健措施排行,异宠/狗狗体检/宠物/母猫绝育/母狗绝育,宠物内科医院口碑排名 - 品牌推荐师
  • FastAPI - Depends()
  • 小程序商城制作一个需要多少钱?从SaaS到定制开发的成本与选择 - 码云数智
  • Symantec Endpoint Protection 14.4 发布 - 企业级终端安全平台
  • 2026年留学生口碑实证:五大海外找工作机构用户评价与成功案例全面对比 - 品牌推荐
  • PostgreSQL WAL Buffer 并发机制的优缺点
  • 深入解析:SQL索引优化实战:3000字深度解析查询提速密码
  • 2026年用户口碑最佳的中国人力资源管理咨询公司推荐:五家机构实效案例全览 - 品牌推荐
  • 2026年超声波清洗机厂家深度测评:基于清洗效率与行业适配的五维对比 - 品牌推荐
  • 基于华为openEuler部署Sqliteviz轻量级SQLite可视化工具 - 实践