C#自定义逻辑字符串解码求助:特殊编码文本转目标中文
乱码转目标文本的解决思路
已知信息
- 原始乱码文本:
(å\x9C°å\x9D\x803)7SJ686ä¿\x9Dæ\x8A¤è£\Nç½®v1.00.log - 目标文本:
(地址3)7SJ686保护装置v1.00.log - 原始十六进制数据:
28 C3 A5 5C 78 39 43 C2 B0 C3 A5 5C 78 39 44 5C 78 38 30 33 29 37 53 4A 36 38 36 C3 A4 C2 BF 5C 78 39 44 C3 A6 5C 78 38 41 C2 A4 C3 A8 C2 A3 5C 4E C3 A7 C2 BD C2 AE 76 31 2E 30 30 2E 6C 6F 67
具体解决步骤
1. 定位编码错位规律
将目标文本的每个中文字符转成UTF-8十六进制,和原始十六进制片段逐一对比,可发现明确的转换规则:
- 目标“地”的UTF-8是
E5 9C B0,对应原始乱码å\x9C°,其十六进制是C3 A5 5C 78 39 43 C2 B0:E5被转成UTF-8字符å(编码C3 A5)9C被转成字符串形式的十六进制转义\x9C(编码5C 78 39 43)B0被转成UTF-8字符°(编码C2 B0)
- 其余中文字符均遵循同一规律:中文字符的UTF-8三个字节,分别被处理为「UTF-8显示字符」、「字符串转义
\xXX」或「UTF-8特殊字符」的组合。
2. 验证自定义字符替换
针对推测的\N是\x85的替代,验证目标“装”的UTF-8是E8 A3 85:
- 对应原始乱码
è£\N,十六进制为C3 A8 C2 A3 5C 4E E8→è(C3 A8),A3→£(C2 A3),85被替换为\N(5C 4E),完全匹配规律。
3. 编写还原逻辑
基于上述规律,还原脚本可按以下步骤实现:
- 映射UTF-8显示字符到原字节:
显示字符 对应字节 å0xE5ä0xE4æ0xE6è0xE8ç0xE7°0xB0¿0xBF¤0xA4£0xA3½0xBD®0xAE - 处理转义与自定义替换:
- 将字符串中的
\xXX替换为对应的十六进制字节 - 将
\N替换为字节0x85
- 将字符串中的
- 拼接字节并解码:把所有还原后的字节拼接成数组,用UTF-8解码得到目标文本。
4. 验证还原结果
按上述逻辑处理原始十六进制,可逐一还原每个中文字符:
C3 A5 5C 78 39 43 C2 B0→E5 9C B0→ “地”C3 A5 5C 78 39 44 5C 78 38 30→E5 9D 80→ “址”C3 A4 C2 BF 5C 78 39 44→E4 BF 9D→ “保”C3 A6 5C 78 38 41 C2 A4→E6 8A A4→ “护”C3 A8 C2 A3 5C 4E→E8 A3 85→ “装”C3 A7 C2 BD C2 AE→E7 BD AE→ “置”
拼接后解码完全匹配目标文本。
内容的提问来源于stack exchange,提问作者FEST
相关产品推荐
相关产品推荐

