社区
MySQL
帖子详情
MySQL ,一字段值存的是unicode值,查询出来都是乱码了,求解决方法
khijfv2008
2010-11-22 02:18:23
MySQL ,一字段值存的是unicode值,直接查询都是乱码了,求解决方法
这个值是C++以宽字符写进库里的
有什么看函数二转换或在C#里有什么方法可以把值转回中文
如果有人朋友解决我没及时回复请Mail 1716720@qq.com
...全文
332
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)
在DELPHI中使用MyDAC连接
MySQL
数据库时中文显示
乱码
的
解决
方法
在DELPHI中使用MyDAC连接
MySQL
数据库时中文显示
乱码
的
解决
方法
。
mysql
数据库
乱码
之保存越南文
乱码
解决
方法
我自己测试一下,很多字符变成了 ‘?’。 数据库连接已经是使用了 utf8 字符集: 代码如下:define(“
MYSQL
_ENCODE”, “UTF8”);
mysql
_query(‘SET NAMES ‘.
MYSQL
_ENCODE,$conn) or die(‘字符集设置错误’.
mysql
_error()); 搞了大半小时,没有搞定。 insert 的数据都是仍然
乱码
,突然想,是不是
字段
不能保存这些越南文。 我看一下数据库字符集,默认都是 gbk,这个对中文是没有问题的,一碰到越南文,就
乱码
了。 于是,我将可能用到越南文的
字段
的字符集修改为 utf8,校对修改为:utf8_unicod
解决
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
查询
编码后的数据,此时是查不到数据的。 例如...
【问题集锦】
解决
Python通过
Mysql
语句
查询
出现中文
乱码
,
unicode
类型
解决
Python通过
Mysql
语句
查询
出现
乱码
在
查询
过程中,
查询
的数据库
字段
类型为varchar 排序规则设置 utf8_general_ci 查出来之后发现是中文
乱码
,已打印就报错,所以就
查询
它的类型为
unicode
类型 在python语句中最上方已经添加了 # -*- coding:utf-8 -*- 可惜不管用 在添加了下面以后,就正常了 import sys rel...
MySQL
57,065
社区成员
56,760
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章