社区
MySQL
帖子详情
MySQL ,一字段值存的是unicode值,查询出来都是乱码了,求解决方法
khijfv2008
2010-11-22 02:18:23
MySQL ,一字段值存的是unicode值,直接查询都是乱码了,求解决方法
这个值是C++以宽字符写进库里的
有什么看函数二转换或在C#里有什么方法可以把值转回中文
如果有人朋友解决我没及时回复请Mail 1716720@qq.com
...全文
312
24
打赏
收藏
MySQL ,一字段值存的是unicode值,查询出来都是乱码了,求解决方法
MySQL ,一字段值存的是unicode值,直接查询都是乱码了,求解决方法 这个值是C++以宽字符写进库里的 有什么看函数二转换或在C#里有什么方法可以把值转回中文 如果有人朋友解决我没及时回复请Mail 1716720@qq.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
khijfv2008
2010-11-25
打赏
举报
回复
要不留个邮箱我把数据文件给你,你试下,网上的找到的方法我都试了
我用的是C#,写入数据人是用C++
C++接口是别人开发的,要是我了解接口怎么实现的我也可以用他的方法解码了,现在我就是不了解
ACMAIN_CHM
2010-11-25
打赏
举报
回复
+--------------+--------------------------+
| nickname | HEX(nickname ) |
+--------------+--------------------------+
| VV- | 0E560E562D |
| U?Q | 1055018051 |
| X=?D0)YX | 15583D84443029590258 |
为什么不同时给出这三记录所对应的实际内容应该是什么?
ACMAIN_CHM
2010-11-24
打赏
举报
回复
都试了哪几种?
还有,要注意你的接口程序中有没有对字符集进行重新转换。
khijfv2008
2010-11-24
打赏
举报
回复
set names 那几种都试过了,,,
ACMAIN_CHM
2010-11-24
打赏
举报
回复
[Quote]但写数据的人提供了接口可以查出来,不是乱码的,[/Quote]关键是要找到正确的字符集,然后你 set names 'xxxx'; 就可以了。
khijfv2008
2010-11-24
打赏
举报
回复
mysql> select nickname, HEX(nickname ) from gs_userinfo_tbl;
+--------------+--------------------------+
| nickname | HEX(nickname ) |
+--------------+--------------------------+
| VV- | 0E560E562D |
| U?Q | 1055018051 |
| X=?D0)YX | 15583D84443029590258 |
| Q?R | 1B51D552 |
| | 20 |
| *s4Yn0???? | 2A7334596E30DD84DD84 |
| A | 41 |
| NgRKN6r | 4E671A524B4E3672 |
| S | 53 |
| a | 61 |
| eg?n?n | 65679C6E9C6E |
| h | 68 |
| p | 70 |
| s | 73 |
| v | 76 |
| wPwP?v*b?VN | 7750775084762A62FE560B4E |
| }v?ec?k?=\ | 7D76E56563886B883D5C |
| ?u?rKN?[? | AF75C2724B4E8C5B8E7F |
| ?r?P?vAml | C272B2508476416D136C |
| ??í??[ | CE98ED8BD25B |
| ????v?[k? | DE98D47F8476B35B6B86 |
+--------------+--------------------------+
21 rows in set (0.02 sec)
因为数据是别人写进去的,所以我不知道写进去的时候是什么样子,但写数据的人提供了接口可以查出来,不是乱码的,
ACMAIN_CHM
2010-11-24
打赏
举报
回复
你的表中的字符集设置是 latin1 ,这样显然,你插入的中文会被转换成latin1 编码来存放。如果你INSERT的时候设置也是latin1 则没有什么问题,但如果你INSERT的时候设置的是其它字符集则会产生编码的转换,从而导致乱码。
99%的可能是,你现在数据库表中存储的本身就是乱码了。
找一条记录SELECT出来,看看实现的编码是什么。
select nickname, HEX(nickname ) from gs_userinfo_tbl where user_id =12345677;
然后把这条记录所对应的中文也贴出来。
另外你的C++程序中使用的字符集设置是什么?建议你在你的程序中执行一下 show VARIABLES like 'character_set%';看看结果是什么?
wwwwb
2010-11-24
打赏
举报
回复
你的字符集不统一,不知道你表中的内容是latin1、GBK、UTF8,
估计你要在统一的字符集下重新插入记录
select hex(有中文内容的字段名) from tt
贴结果,
khijfv2008
2010-11-24
打赏
举报
回复
这个方法试过,行不通
khijfv2008
2010-11-24
打赏
举报
回复
试过了的
wwwwb
2010-11-24
打赏
举报
回复
你的表字符集是latin1
SET NAMES latin1
khijfv2008
2010-11-24
打赏
举报
回复
mysql> show full columns from gs_userinfo_tbl;
+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| user_id | varchar(32) | latin1_swedish_ci | NO | PRI | | | select,insert,update,references | |
| nickname | varchar(32) | latin1_bin | YES | UNI | NULL | | select,insert,update,references | |
+----------+-------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
2 rows in set (0.00 sec)
khijfv2008
2010-11-24
打赏
举报
回复
mysql> show create table gs_userinfo_tbl;
+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| gs_userinfo_tbl | CREATE TABLE `gs_userinfo_tbl` (
`user_id` varchar(32) NOT NULL DEFAULT '',
`nickname` varchar(32) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `nickname` (`nickname`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
ACMAIN_CHM
2010-11-24
打赏
举报
回复
其它检查结果呢?
khijfv2008
2010-11-24
打赏
举报
回复
mysql> show variables like 'char%'
-> ;
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\ |
+--------------------------+---------------------------------------------------------+
8 rows in set (0.00 sec)
wwwwb
2010-11-23
打赏
举报
回复
show VARIABLES like 'character_set%';
贴结果
huabing84
2010-11-23
打赏
举报
回复
SET NAMES GBK
ACMAIN_CHM
2010-11-22
打赏
举报
回复
估计,你的字段中存放的并不是UTF8的编码。
ACMAIN_CHM
2010-11-22
打赏
举报
回复
按下贴中方法,贴出你的检查结果。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
khijfv2008
2010-11-22
打赏
举报
回复
以上方法好像不通呀,还有别的可行方法不
加载更多回复(4)
解决
MySQL
表中
字段
显示
乱码
从上面可以看出,COLUMNS_V2表中的COMMENT
字段
的编码方式为utf-8,而COLUMN_NAME
字段
的编码方式为latin1_bin。&use
Unicode
=true&characterEncoding=UTF-8的作用为与localhost上3306端口上的名为mybatis库进行数据传输采用UTF-8的编码方式;编码的问题,
MySQL
中的表默认编码是latin1,而我的客户端及服务器采用的编码确是utf8,二者编码方式不一致导致的。首先查看一下出现
乱码
的那个表的编码方式,使用。
mysql
查询
出来的数据
乱码
,如何
解决
;
MySQL
命令行
查询
乱码
解决
方法
:
MySQL
会出现中文
乱码
的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题 强烈建议使用utf8,utf8可以兼容世界上所有字符 第一步:找到安装
mysql
的目录找到 my.ini 文件; 第二步:使用记事本打开my.ini文件 , 找到这个地方 看看default-character-set ...
解决
MySQL
数据库中文
乱码
问题(接口存储时)
需要确保所有这些方面都正确地处理了字符集,才能正确地存储和显示中文数据。将"charset=utf8mb4"添加到连接字符串中,这指定了应用程序在与
MySQL
数据库交互时使用的字符集。同时,检查HTTP请
求
头的Content-Type
字段
,确保它指定了正确的字符集。确认数据库和表的字符集都是"utf8mb4",这个字符集支持所有的
Unicode
字符,包括中文。在使用接口将中文数据存储到
MySQL
数据库时,发现数据在数据库中显示为
乱码
。:通过接口存储中文数据到
MySQL
数据库时,数据显示为
乱码
。
解决
MYSQL
中文
乱码
问题
一、
乱码
的原因: 1、 client客户端的编码不是utf8 2、server端的编码不是utf8 3、database数据库的编码不是utf8 4、数据库的表的编码不是utf8 5、表中的列
字段
编码不是utf8 主要的原因在于前三个偏多。 二、查看数据库的编码方式
mysql
>show variables like ‘character%’; 此截图是
解决
之后的,查看哪个不是和上面一样。 三、
解决
的办法有俩种: 1、对/etc/
mysql
/my.cnf 配置文件进行修改 [
mysql
d] char
mysql
数据库中文变成
unicode
_
unicode
下,读取数据库
乱码
问题
TCHAR cbContent[512];dyn.GetFieldValue(0,cbConte【本文来自鸿网互联 (http://www.68idc.cn)】nt,512);// 中文会显示
乱码
AfxMessageBox(cbContent);// 编码转换int nBufferSize = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)cbContent, -...
MySQL
56,678
社区成员
56,708
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章