在Windows系统使用Hi3861开发板时,安装测试HUAWEI DevEco Device Tool过程中出现UnicodeDecodeError编译报错。

报错现象

当你点击编译后,控制台输出了一大堆编译信息,最后突然报错,核心信息如下:

[OHOS ERROR] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb2 in position 9: invalid start byte
[OHOS ERROR] Unhandled error: 'utf-8' codec can't decode byte 0xb2 in position 9: invalid start byte
scons: *** [src\out\...\target.elf] Failed to build!

在这里插入图片描述

这个错误通常发生在hb build过程中,Python脚本试图用UTF-8格式读取某些内容(如文件路径、日志输出或源码注释),但遇到了GBK编码的字符(如中文),导致解码失败。

根本原因

这个问题的根源通常在于Windows系统的区域设置

Windows系统默认的区域设置是“中文(简体, 中国)”,其对应的非Unicode程序语言编码是GBK(代码页936)。然而,现代开发工具链(包括Python 3、Ninja、GCC等)越来越倾向于默认使用UTF-8。

当鸿蒙的构建工具(基于Python)在Windows上运行时,如果系统开启了“Beta版: 使用Unicode UTF-8提供全球语言支持”,或者某些工具强制以UTF-8模式读取系统返回的GBK编码信息(例如包含中文的用户名路径 C:\Users\中文 或工程路径),就会发生冲突,导致编译崩溃。

解决方案:修改系统区域设置

根据实际调试经验,最有效的解决方法是调整Windows的“系统区域设置”。请按照以下步骤操作:

  1. 打开控制面板

    • 按下键盘上的 Win + R 键,打开“运行”对话框。
    • 输入 control 并回车,打开控制面板。
      在这里插入图片描述
  2. 进入区域设置

    • 在控制面板中,确保右上角的“查看方式”为“类别”。
    • 点击 时钟和区域
    • 点击 区域(下方小字:更改日期、时间或数字格式)。
      在这里插入图片描述
  3. 修改管理选项

    • 在弹出的“区域”小窗口中,点击顶部的 管理 选项卡。
    • 点击下方的 更改系统区域设置©… 按钮。
  4. 关键步骤:取消勾选UTF-8选项

    • 在弹出的“区域设置”窗口中,找到 Beta版: 使用Unicode UTF-8提供全球语言支持(U)
    • 如果你之前勾选了它,请务必取消勾选
    • 如果你之前没有勾选,且依然报错,可以尝试勾选它(但通常取消勾选对国内开发环境兼容性更好)。
    • 点击“确定”。
      在这里插入图片描述
  5. 重启电脑

    • 系统会提示你需要重启计算机才能使更改生效。请保存所有工作并重启电脑。
总结

UnicodeDecodeError 是Windows环境下C/C++和Python混合开发时的经典问题。通过调整系统区域设置,并规范工程路径的命名,通常可以彻底解决这个问题。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐