遇到一个奇怪的 bug,一头雾水~大家帮忙看看?

2020-11-09 10:53:26 +08:00
 firhome
页面上请求一个接口 A,

这个接口 A 有一个 字段 text,varchar(2000) ,mysql utf-8 。

然后在 windows 7 电脑上 一句话里面有几个字会显示 方块。 接口返回,页面展示会显示方块

但是在其它电脑上完全正常。


然后查了一下发型两个字的字符编码完全不同

比如:“你好” (用户不知道从哪里 copy 过来的就是不能用),但是我本地重新写个“你好” 确可以使用。

但是长的确一模一样。

前端就是一个 input 输入框 用户 copy 后端直接存。 显示的时候 就是 win7 有几个字出现方块(接口返回也是方块)
2867 次点击
所在节点    程序员
22 条回复
shintendo
2020-11-09 11:03:29 +08:00
然后查了一下发型两个字的字符编码完全不同
--------
字符编码贴一下呗
KuroNekoFan
2020-11-09 11:10:10 +08:00
utf8-bom?
opengps
2020-11-09 11:11:23 +08:00
从 word 里换个字体试试?
firhome
2020-11-09 11:39:04 +08:00
@shintendo [⻓] 和 [长] 就这两个字,第一个字 win7 里显示 方块,第二个字 是我打的正常。我不确定这样直接回复 出来还对不对。
CloudnuY
2020-11-09 11:45:35 +08:00
@firhome #4 这两个字不是一个字,第一个是 [中日韩字根简体中文长] unicode 编号 U+2ED3,第二个是 [中日韩象形文字长] unicode 编号 U+957F
firhome
2020-11-09 11:46:07 +08:00
@CloudnuY 那这种问题该怎么解决呢?
hahastudio
2020-11-09 11:47:18 +08:00
你别说还真不一样
'⻓' 0x2ed3 在中日韩汉字部首补充里
'长' 0x957f 在中日韩统一表意文字列表里
通常打出来的都是 0x957f
yiXu
2020-11-09 11:47:45 +08:00
确实不一样,前者是 \u2ed3,后者是 \u957f
yiXu
2020-11-09 11:49:11 +08:00
页面显示编码支持就行,如果不支持,那就没办法,只能转换到支持的编码吧
liyang5945
2020-11-09 11:50:28 +08:00
刚才在调试工具里试了下:
'长'.charCodeAt(0) ==>38271
'⻓'.charCodeAt(0)==>11987
就是字符编码不一样呗,猜测可能是繁体字符 ?
firhome
2020-11-09 11:51:36 +08:00
@yiXu 关键是就 win7 不行, 如果转的话 是人工转呢 还是 ?
CloudnuY
2020-11-09 11:53:15 +08:00
@firhome #11 人工做一个字典库吧,遇到一个加一条
hahastudio
2020-11-09 12:00:38 +08:00
也许要修改一下 Windows 的 Region ?
yiXu
2020-11-09 12:07:14 +08:00
@firhome 页面编码不是 utf-8 ?是否可以设置为 utf-8
Curtion
2020-11-09 12:12:23 +08:00
查了一下,这俩的编码来自:中日韩汉字部首补充和中日韩统一表意文字,估计是不同的机构定义的?
firhome
2020-11-09 12:21:03 +08:00
@yiXu 是 utf-8
lxk11153
2020-11-09 12:25:57 +08:00
https://en.wiktionary.org/wiki/%E9%95%BF
> U+957F, 长
> CJK UNIFIED IDEOGRAPH-957F
> U+2ED3, ⻓
> CJK RADICAL C-SIMPLIFIED LONG

你说的"你好"没看到。
firhome
2020-11-09 12:28:00 +08:00
@lxk11153 我那是之前举例, 看我补充内容,那个 长 字
yiXu
2020-11-09 12:31:09 +08:00
imn1
2020-11-09 12:33:22 +08:00
CJK Radicals Supplement Range: 2e80 ~ 2eff (这范围也就 128 个字符)
主要是汉字的偏旁部首,有少量简单汉字,但也是作为汉字的“部分”来看待的
这些字符一般需要特殊方式输入,不是平常打字打出来的
写段代码识别一下就行了

而后面说的“字型”、“你好”那些,应该就是 GBK 和 utf-8 的区别

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/723108

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX