Ubuntu下Golang编译出现乱码,通常由字符编码不一致导致,可按以下步骤解决:
-
检查并设置系统编码
- 执行
locale命令,确认LANG和LC_ALL为UTF-8(如en_US.UTF-8或zh_CN.UTF-8)。 - 若未设置,可通过以下命令永久修改(以UTF-8为例):
sudo dpkg-reconfigure locales # 选择UTF-8编码 echo 'export LANG=en_US.UTF-8' >> ~/.bashrc echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc source ~/.bashrc
- 执行
-
确保终端编码为UTF-8
- 在终端中执行:
export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 - 部分终端(如GNOME Terminal)可在设置中直接选择UTF-8编码。
- 在终端中执行:
-
处理Golang程序编码
- 若程序涉及文件读写或字符串转换,使用
golang.org/x/text/encoding包统一编码(如UTF-8):import "golang.org/x/text/encoding/unicode" // 示例:将GBK转换为UTF-8 decoder := unicode.UTF8.NewDecoder() utf8Reader := decoder.Reader(bytes.NewReader(gbkBytes))
- 若程序涉及文件读写或字符串转换,使用
-
检查日志库配置
- 若使用日志库(如zap、logrus),确认其输出编码为UTF-8。例如,zap可通过配置
EncoderConfig指定UTF-8编码。
- 若使用日志库(如zap、logrus),确认其输出编码为UTF-8。例如,zap可通过配置
-
安装中文字体(如需显示中文)
- 执行以下命令安装常用中文字体:
sudo apt-get install fonts-wqy-microhei fonts-wqy-zenhei
- 执行以下命令安装常用中文字体:
验证:编译后查看输出是否正常显示,若仍有乱码,检查具体代码中字符串处理逻辑是否涉及非UTF-8编码。