社区
MySQL
帖子详情
MySQL ,一字段值存的是unicode值,查询出来都是乱码了,求解决方法
khijfv2008
2010-11-22 02:18:23
MySQL ,一字段值存的是unicode值,直接查询都是乱码了,求解决方法
这个值是C++以宽字符写进库里的
有什么看函数二转换或在C#里有什么方法可以把值转回中文
如果有人朋友解决我没及时回复请Mail 1716720@qq.com
...全文
343
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
关于
unicode
编码
查询
一、背景 在实际开发中,很多时候我们需要存储一些表情Emojit或者特殊符号,这个时候如果你单纯去获取用户带有表情包的名称数据去存储时,数据库存储存储会出现
乱码
,所以我们在存储前需要对用户的数据进行
unicode
编码后再存储,获取的时候再进行
unicode
转码显示即可。 二、问题 但是由于转码后的数据在数据库中存储的是带有\u开头的2或4位的16进制表示的字符,这个时候如果我们需要对用户名称进行
查询
或者模糊
查询
,直接使用sql
查询
编码后的数据,此时是查不到数据的。 例如...
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, -...
【问题集锦】
解决
Python通过
Mysql
语句
查询
出现中文
乱码
,
unicode
类型
解决
Python通过
Mysql
语句
查询
出现
乱码
在
查询
过程中,
查询
的数据库
字段
类型为varchar 排序规则设置 utf8_general_ci 查出来之后发现是中文
乱码
,已打印就报错,所以就
查询
它的类型为
unicode
类型 在python语句中最上方已经添加了 # -*- coding:utf-8 -*- 可惜不管用 在添加了下面以后,就正常了 import sys rel...
mysql
select
乱码
_
MySQL
命令行
查询
乱码
解决
方法
:
MySQL
会出现中文
乱码
的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如php)的连线语系设定问题强烈建议使用utf8,utf8可以兼容世界上所有字符第一步:找到安装
mysql
的目录找到 my.ini 文件;第二步:使用记事本打开my.ini文件 ,找到这个地方 看看defau...
MySQL
57,062
社区成员
56,762
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章