首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql十六进制结果与shell和java不同的原因

mysql十六进制结果与shell和java不同的原因
EN

Stack Overflow用户
提问于 2017-06-14 01:08:49
回答 1查看 76关注 0票数 0

我想得到汉字的unicode表示,例如'京' --> 4eac

Shell

代码语言:javascript
复制
➜  ~ printf "%x\n" \'京
4eac

Java

代码语言:javascript
复制
jshell> Integer.toHexString('京');
$14 ==> "4eac"

为什么在mysql中它有不同的结果?

代码语言:javascript
复制
select hex('京');
+------------+
| hex('京')  |
+------------+
| E4BAAC     |
+------------+

show variables like 'char%';
+--------------------------+------------------------------------------------------+
| Variable_name            | Value                                                |
+--------------------------+------------------------------------------------------+
| character_set_client     | utf8                                                 |
| character_set_connection | utf8                                                 |
| character_set_database   | utf8                                                 |
| character_set_filesystem | binary                                               |
| character_set_results    | utf8                                                 |
| character_set_server     | utf8                                                 |
| character_set_system     | utf8                                                 |

在mysql中,它必须使用下面的方式来获得与上面相同的结果。

代码语言:javascript
复制
select hex(convert('京' using ucs2));
+--------------------------------+
| hex(convert('京' using ucs2))  |
+--------------------------------+
| 4EAC                           |
+--------------------------------+

那么,为什么mysql中的hex与其他的不同呢?

此外,从unicode到字符

代码语言:javascript
复制
➜  ~ echo '\u4eac'
京

Java

代码语言:javascript
复制
jshell> String s = "\u4eac";
s ==> "京"

Mysql

代码语言:javascript
复制
select char(0x4eac using ucs2);
+-------------------------+
| char(0x4eac using ucs2) |
+-------------------------+
| 京                      |
+-------------------------+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-27 12:17:56

UTF-8 (MySQL的utf8或utf8mb4)是与UCS2 (MySQL: ucs2)不同的编码方式。

代码语言:javascript
复制
'京' =
Unicode "codepoint" (in hex) '4eac' =
UCS2 encoding (2 bytes, in hex) '4EAC' =
UTF-8 encoding (3 bytes, in hex) 'E4BAAC' =
html entity '京' (hex) or '京' (decimal)

参考资料:http://unicode.scarfboy.com/?s=U%2B4eac

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44533827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档