
1 EnginDee OP 我可能会使用 node js 来写。 求帮助。 Java 也行。 |
2 UnisandK 2016 年 7 月 10 日 原理不知道,但收藏有这个功能的工具 https://beyondcow.com/textpal/ |
3 shyling 2016 年 7 月 10 日 via iPad 在 ruby 里有 valid_encoding? node 里试试 iconv 吧 java 里用 java.nio.charset 总之就是用 Charset 按顺序一个一个试。。一定要有顺序哦 |
4 shiny PRO 顺序非常重要,错了就会乱码 |
5 busyluo 2016 年 7 月 10 日 via iPhone 从最严格的编码开始试,遇到不正确的内容就跳过,试下一个。 你可以参考 vim 的源码。(我没有看过 vim 源码,理论上可行) |
6 breeswish 2016 年 7 月 10 日 |
7 murmur 2016 年 7 月 10 日 除了 chardet 似乎没别的方法。。。因为大家都不太喜欢 bom 头这个东西 |
8 wangxn 2016 年 7 月 10 日 via Android Mozilla 有个开源项目。但没办法做到 100%精确。 |
9 xuboying 2016 年 7 月 10 日 via Android 不能识别编码,除非你上大数据,要么你让用户指定 fall back 编码 |
11 zhuangzhuang1988 2016 年 7 月 10 日 notepad++ 的源码翻翻看.. |
12 laoyur 2016 年 7 月 10 日 突然想起了 N 年前做 Symbian 文本阅读器的时代 智能检测 UTF-8 ( w/ w/o BOM )、 UTF-16LE/BE 、 GBK 、 Shift-JIS 、 BIG-5 |
16 mbbill 2016 年 7 月 11 日 @busyluo 可能我说的不是很清楚,举个例子,比如你把 cp936 和 big5 都放到 fileencodings 里面就是没有意义的。同一个码点在不同编码里面都是合法的,这就需要用统计学的方法来探测了。 |
17 Arnie97 2016 年 7 月 11 日 via Android 怎么感觉你重造轮子了,推荐一个软件 http://www.gidot.net/typesetter/ |
18 congeec 2016 年 7 月 11 日 via iPhone vim 会像 enca, chardet 一样猜文件编码 Set fileencodings 后不跟任何内容的输出就是文件编码,加上=才是设置编码 我还经常在 UTF8 终端里用 vim 打开 GBK 编码的文件呢 |
20 linux40 2016 年 7 月 11 日 via Android 选几个字符查找? |
21 zouxy 2016 年 7 月 11 日 我的思路: 1 )有 BOM 按 BOM 来。 2 )没 BOM 的情况下,按配置的次序(把最常用的放在前面)一个个检测合法性。 3 )合法的情况下,分析里边的词是不是真的词。另外一个比较简单但我觉得有效的办法,只统计字,如果转出来的结果都是生僻字就是转错了。这个简单办法我之前自己写的过滤垃圾短信相当有效果,常用汉字就 3000 多个。 4 )有一部分仍然是错的,就用其它高级一点的办法。如果要求不高估计前三条差不多够你用了。 |
22 mbbill 2016 年 7 月 11 日 @congeec vim 没有 enca 这样猜编码的能力。能从 UTF8 fallback 到 GBK 是因为 UTF8 编码严格,尝试转换失败了。:h fileencodings 看看。如果你把 GBK 放 UTF8 前面,很多 utf8 的文档就被当成 GBK 打开然后乱码了。 |
25 mbbill 2016 年 7 月 14 日 @congeec 上次一次搞这事儿是 10 年前了。。 http://www.vim.org/scripts/script.php?script_id=1708 有兴趣可以试试 |