如何修复十六进制utf-8字节字符(在latin1\u swedish\u ci表中)

de90aj5v  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(330)

我有一个拉丁文和瑞典语的ci数据库,里面有utf-8字节字符,显示为%c5%a1,%c4%8d,。。。
我已经将数据库和表从latin1转换为utf8,但仍然需要修复utf-8字节字符。

ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

mysql默认字符集:

SHOW VARIABLES LIKE  'char%'

character_set_client    utf8mb4 
character_set_connection    utf8mb4 
character_set_database  utf8mb4 
character_set_filesystem    binary  
character_set_results   utf8mb4 
character_set_server    latin1  
character_set_system    utf8    
character_sets_dir  /usr/share/mysql/charsets/

我尝试了mysql函数但没有成功:

convert(cast(convert(name using  latin1) as binary) using utf8)

我真的需要帮助!谢谢您。

ecbunoof

ecbunoof1#

你在用php吗?有人打电话给你吗 urlencode() ? 不要。该函数仅用于生成url字符串。
让我们再检查一下你桌上的东西。做 SELECT HEX(...) ... -- pisarniška 应变成(为清晰起见添加空格):

70697361726E69 C5A1 6B61   if correctly stored as utf8mb4 (or utf8)
70697361726E69 254335 254131 6B61   if urlencoded first

相关问题