----------yan字用五笔打出来的可以,或者用微软拼音输入法也行,搜狗输入法打出来的不行
问题1:登录从数据库读姓名:
䶮(通过查询数据库编码格式,以及字体编码集知,该字体编码:unicode \ue863 ,gbk \ufe9f),---见图1、2、3
此时java代码以utf-8形式返回,---见图4
独立环境测试(HP-UX),打印日志,显示为:王??(服务器日志字体问题);---见图5
debug模式下显示正常;---见图6
postman测试,本地console日志打印显示正常,postman返回字体显示有问题(怀疑postman字体或者解析有问题);---见图7
用curl命令,将独立请求在灰度独立执行(LINUX),灰度独立打印日志正常;---见图8、9
由此猜测是客户端问题。经客户端查验,更换字体后可解决乱码问题。---见图10
注意:去掉了keep-alive 和length,否则报超时
模拟测试:
问题2:客户端转账,
手工输入:王䶮(unicode \u4dae ,gbk \u3f),前台utf-8传入后端。----见图1
客户端运行时编码格式为GB18030,与短信平台交易以gbk形式传输,此时后端日志打印显示为:王?。----见图2
短信平台发送的短信显示为王?。----见图3
如果将1中数据库中的䶮( unicode \ue863 ,gbk \ufe9f)拷贝出来粘贴上操作,虽然客户端因字体问题显示乱码, ----见图4
但是发送短信平台可正常返回。 ----见图5
模拟测试:
改动:经gb18030转换
后端utf-8接收,打印正常,发送报文时,由于直接从utf-8转gb18030,打印正常,再从18030转为byte,因后端服务器字体问题,打印为??
发送短信正常。
模拟测试1,经gb18030转换:
问题:
1、为什么经GB18030转换就可以了???------因为转一次GB18030后得到的GB18030编码是:FE9F,而FE9F正好对应有gbk编码。
是否所有汉字都可以先转GB18030,再转GBK?----不是,比如e863的,转一次GB18030后,得到的GB18030编码是:8336CF39,此时再转GBK是乱码:�6�9 。不过可以先做一次判断,如果该汉字经gbk转换后再转成String,跟原始汉字不equals,那么可以把该汉字先转一次GB18030,再用GBK转成String,测试结果见下图3。
2、Charset.defaultCharset()由什么决定?
3、运行时编码格式与代码里编码格式分别控制什么?
https://blog.csdn.net/gywtzh0889/article/details/71083459 ---汉字unicode编码范围
前者在unicode是兼容性汉字区块( U+F900 to U+FAFF)里的,后者是统一汉字区块(U+4E00 to U+9FFF)里的
unicode编码中包含有477个兼容汉字,有的和一般的汉字长得一模一样!!!令人很伤感。参看这477个汉字:中文字符集 Unicode 编码范围-兼容汉字,共477字;比如“律”、“例”、“力”等字,都是一模一样。
所以,一个汉字还是只对应一个编码,只不过他们长得样子相同而已。
一、乱码的原因
gbk的中文编码是一个汉字用【2】个字节表示,例如汉字“内部”的gbk编码16进制的显示为c4 da b2 bf
utf-8的中文编码是一个汉字用【3】个字节表示,例如汉字“内部”的utf-8编码16进制的显示为e5 86 85 e9 83 a8
很显然,gbk是无法直接转换成utf-8,少字节变为多字节,谁知道缺少的字节是什么啊?!
GB 2312 标准共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个;同时收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的 682 个字符。
GBK编码范围:8140-FEFE,总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。---gbk中所有汉字: https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php http://tools.jb51.net/table/gbk_table
http://ff.163.com/newflyff/gbk-list/
GB 18030 与 GB 2312-1980 和 GBK 兼容,共收录汉字70244个。与 UTF-8 相同,采用多字节编码,每个字可以由 1 个、2 个或 4 个字节组成。
Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。---unicode中所有汉字 (所有汉字) https://blog.csdn.net/gywtzh0889/article/details/71083459
1、百度百科查询结果(查生僻字):https://baike.baidu.com/item/gb18030/3204518?fr=aladdin
2、汉字字符集编码查询结(查编码)果: https://www.qqxiuzi.cn/bianma/zifuji.php
3、csdn查询结果:https://blog.csdn.net/gywtzh0889/article/details/71083459
4、https://www.qqxiuzi.cn/zh/hanzi-gbk-bianma.php