# fileencoding **Repository Path**: vanvenj/fileencoding ## Basic Information - **Project Name**: fileencoding - **Description**: 处理 pml utf8 问题 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2018-10-17 - **Last Updated**: 2021-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 前言 目前 中文版 Windows 系统 PDMS 对于 UTF-8 保存的程序读取出现问题; 而对于 cp936 保存的程序则可以很好的运行。 # 解决方案 目前没有一个方法可以准确的检测文本文件的code page / file encoding 对于中文问题 通常编码会出现 cp936 和 utf-8 和 utf-8-sig 三种情况 而中文版 PDMS 需要的pml 的文件编码 以cp936方式储存,否则读取会出错 对于英文字符 cp936 和 utf8 的存储方式都是一样的 BOM(Byte Order Mark) 问题仅仅出现在unicode 的 utf8 utf16 utf32 ...上 所以我们可以采取 取巧的方法 1. 以二进制方式读取文本文件 2. 对文件进行 utf8 解码 如果出现异常 则认为是 cp936 不做处理 否则去3 3. 对 utf8 解码后文件 进行 cp936 编码 如果没有异常则保存 否则 去4 4. 说明很可能 文件是 utf8-bom 以 utf8-sig 解码 并且 以cp936 编码并保存。 ![illustrate](illustrate.gif)