现在有这么个需求,用户可以上传一些列的文件,然后需要 web 预览,但是读取文件的时候如何去判断文件编码,至少最基本需要知道是 utf-8 还是 gbk 的。
如果是 utf8 bom 的可以根据前几个字节去判断,但是很多是无 bom 的,不知道应该怎么去判断了
1
lhx2008 2020-04-29 12:11:39 +08:00
要是这么好解决的话,编辑器都不用提供编码切换了。。无头就统一按 UTF-8 处理吧
|
2
yousabuk 2020-04-29 12:13:25 +08:00 via iPhone
用户上传时自己选择编码方式,旁边预览文本部分内容按编码后的内容。
|
4
cheng6563 2020-04-29 12:17:25 +08:00 via Android
只能猜
|
5
lhx2008 2020-04-29 12:20:54 +08:00
@Kontinue #3 如果只有 UTF-8 和 GBK 两种编码,可以用一些方法来猜一下是不是 UTF-8 模式,但是不可能完全准确(比如字符太少了)。
|
6
hcymk2 2020-04-29 12:27:04 +08:00
chardet
|
7
minami 2020-04-29 12:29:45 +08:00 via Android
python 有 chatdet 库,java 应该也有移植吧…
|
9
Foxkeh 2020-04-29 12:36:58 +08:00
文件格式有要求的话,
我的做法是让用户先在上传界面下载模板然后在模板中编辑 |
10
kanezeng 2020-04-29 12:43:17 +08:00
完美的不太可能,但是如果你可选范围不大的话,可以大概猜一下,比如内容是否符合 utf-8 的变长编码方式,是否落在 GBK 编码范围:8140 - FEFE,剔除 xx7F 码位之类的。
很久以前我还做过就是比如抽取一段出来用一种编码去读入,看看有没有报错,没报错就转 utf8 再转回来比较一下和之前是不是一致的之类的各种土法炼钢。 |
11
littlewing 2020-04-29 12:46:36 +08:00
只能靠猜,根据编码范围去猜,但不能保证 100%准确
|
12
kingiis 2020-04-29 14:44:28 +08:00
用 utf-8 去读 判断有没有乱码就行了
|
13
xuanbg 2020-04-29 16:29:11 +08:00
只能按个去枚举,哪个特征符合了就是哪个编码。分辨不出就只能人工选择了。
|
15
lechain 2020-04-30 00:06:02 +08:00 via Android
个人觉得可以给用户提供各种编码选项,让用户选择按什麽编码格式来解析他上传的文本
|
16
iminto 2020-04-30 09:41:03 +08:00
|