如何修复十六进制UTF-8字节字符(在latin1_swedish_ci表中)

问题描述 投票:0回答:1

我有一个带有UTF-8字节字符的latin1_swedish_ci数据库,显示为%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)

我真的需要帮助!谢谢。

mysql encoding utf-8
1个回答
1
投票

你在用PHP吗?有没有打电话给urlencode()?别。仅将该函数用于构建url字符串。

让我们仔细检查表中的内容。 SELECT HEX(...) ... - pisarniška应该成为(为清晰起见添加空格):

70697361726E69 C5A1 6B61   if correctly stored as utf8mb4 (or utf8)
70697361726E69 254335 254131 6B61   if urlencoded first
© www.soinside.com 2019 - 2024. All rights reserved.