比如一个文件中既有gb2312又有utf8,意思就是不能用一种编码解析出来,有什么办法把该文件解析成同一种编码呢
|
clinoApr 22, 2015
1
两个都试试咯,有UnicodeDecodeError之类的就试下一个编码,不过这种方法碰到两种都能decode的就抓瞎了
|
|
future0906Apr 22, 2015
2
UTF-8和GB2312的编码空间应该是有重叠,没办法自动解析,手工处理吧。
|
|
clinoApr 22, 2015
3
或者碰到两种都能decode的才人工判断下,只有一种能decode就能自动了
|
|
bomblessApr 22, 2015
4
这个时候你需要 ML (逃
要不基于某种马卡罗夫链?(再逃 |
|
amaranthfApr 22, 2015
5
这两种编码混杂在同一个文件中,几乎不可能自动识别吧,毕竟编码有重叠。只能人工喽。
|
|
ioApr 22, 2015
6
神经网络
|
|
8
@future0906 不知道编辑器是怎么处理的,遇到无法解析的会显示乱码怎么实现的呢
|
|
mhycyApr 22, 2015
10
你需要一个常用词列表才有可能进行部分自动的转换
方案如下: 1 - 按双字节拆分,用GB2312解码(其实这个步骤就是直接用GB2312解码) 2 - 遇到GB2312无法解码的字符,明确标记为UTF-8 3 - 一般中文在UTF-8都使用3字节进行储存,所以对于这篇文文章照样进行三字节拆分 4 - 移位三次,提出确认落在 u4E00 - u9FFF 范围内的的字符 5 - 上常用词表进行过滤 (如果常用词表有文字使用频率的话,多个解码结果进行加权投票选字能提高成功率) |
|
mhycyApr 22, 2015
11
|
|
12
@mhycy 感觉这个方法处理纯中文应该可以,但一般文档是中英文都有的,其中英文部分gb2312和utf8兼容ascii 只有一个字节,按照你的思路稍微做一些修改应该可以,但没想好用什么数据结构表示结果中产生的多种可能性
|
|
imn1Apr 22, 2015
13
如果是标记语言文本,并且知道有什么编码,就容易些,按标签分割判断
纯文本的话,如果两种编码之间没有明确分界,例如换行,就很难办了 |
|
mhycyApr 22, 2015
14
|
|
zouxyApr 22, 2015
16
想不到还有这种需求.
如果只有中文.还可以搞搞. 如果是全世界的文字,就没办法了. |
|
FrankFang128Apr 22, 2015 via Android
17
靠猜
|
|
19
@FrankFang128 字符太多,没法一个一个猜啊
|
|
SHFApr 2, 2018
21
MacType 的源码就是 Shift-JIS 和 GB2312 混合编码的,神坑。
突然想到一个好方法,可以分别以这两种编码作为原编码,都转换为 UTF-8,然后用工具比较两个文件做个合并。 |