Matlab写入乌尔都语到记事本文件出现乱码如何解决
乌尔都语文本写入乱码修复方案
你遇到的乱码是UTF-8编码的乌尔都语文本被Windows记事本错误按照ANSI编码解析导致的,属于Windows系统编码识别的常见问题,修复方案如下:
修复后代码
% rst为OCR输出的UTF-8字节流,直接转char即可,无需额外转码 s = char(rst); % 打开文件时指定UTF-8编码 f = fopen('temp.txt', 'w', 'n', 'UTF-8'); % 先写入UTF-8 BOM头,解决Windows记事本编码识别问题 fwrite(f, [0xEF, 0xBB, 0xBF], 'uint8'); % 写入文本内容 fprintf(f, '%s\r\n', s); fclose(f);
核心修改说明
- 删除冗余的
native2unicode转码逻辑:如果你的OCR输出rst本身已经是UTF-8编码的字节序列,重复调用native2unicode会将正确的UTF-8字节转成错误编码内容 - 新增UTF-8 BOM头写入:Windows记事本识别UTF-8编码强制要求文件开头携带BOM(字节顺序标记),没有BOM的UTF-8文件会被默认识别为ANSI编码,直接显示乱码
- 修正写入格式:删除了字符串前多余的空格,避免乌尔都语从右到左的排版逻辑出现异常
验证方法
写入完成后可以先通过Notepad++、VS Code等工具打开文件确认编码为UTF-8-BOM,内容显示正常后再用Windows记事本打开即可正常展示乌尔都语文本。
内容的提问来源于stack exchange,提问作者Shayan Tahir
相关产品推荐
相关产品推荐

