字符集 乱码

乱码
字符集
编码格式

文件编码格式
指的是我们编写的代码保存的编码格式或者要读取文件的编码格式。

操作系统默认的编码格式
window 是GBK
Linux 是UTF-8
window 也是支持utf-8,只是需要特殊指定

编程语言的编码格式:比如说C++,java 语言,在我们需要将一个字节数组转成字符串时

这个编程语言会 以 当前操作系统的编码格式作为 默认的编码格式。
这就是我们在window 下编程通常需要指定UTF-8 的原因。

C++  byte数组转字符串时使用的就是操作系统编码GBK,而原数据是UTF-8 导致读取的数据乱码

当我们读取文件、数据发生乱码时,要先确认原数据的编码格式,
而数据传输IO流肯定是以字节(二进制数据)的形式,不会发生乱码,
关键是从字节数组转字符这个过程 使用的编码是否正确。

总之原数据是什么编码,读取要使用对应的编码。
其实严格来讲上面说的并不是什么转码,只是数据的还原。

真正的转码应该是 原始数据GBK编码,你给我转成UTF-8,完成这种功能需要自己根据2个
套编码表对照转换。使用inconv函数转换编码格式。


mysql 中文 乱码
1 设置ODBC数据源的字符集
在linux环境下,必须安装
unixODBC
MysqlOdbc

控制面板 驱动
odbc有两种驱动
unicode
ansi

驱动配置允许设置字符集
MYSQL Connector/ODBC 提供了两个版本 ANSI driver
Unicode driver

ansi API以A结尾
unicode API以W结尾

例如,SQLPrepareA和SQLPrepareW

libmyodbc8a  支持 ansi
libmyodbc8w  支持 unicode


unixODBC有两个配置文件:
odbc.ini
odbcinst.ini
可以通过odbc_config命令获取两个文件的地址。

在数据源配置文件odbc.ini中,在数据源配置的地方加一条如下语句
CHARSET = UTF8

2 设置数据库字符集
/etc/my.cnf
在**[client]**下加入代码:\n\ndefault-character-set=UTF8
在**[mysqld]**下加入代码:\n\ncharacter_set_server=utf8
在**[ mysql ]**下加入代码:\n\ndefault-character-set=utf8

查看数据库字符集
show variables like ‘%character%’;
show variables like “%colla%”;

字符集乱码
iconv
系统编码
文件编码
终端编码
原理—配置文件

字符集设置
a 系统字符集
locale 
配置文件修改

b 文件字符集 
 file命令可以查看
 iconv可以转换

c 终端字符集 
终端工具设置
secureCrt
windTerm

cat乱码
文件的编码 不等于 系统的编码
vim乱码 
文件的编码 不等于 vim的编码

Linux iconv函数编写
注意参数顺序

iconv命令 转换文件的编码格式
iconv -l 查看支持的字符编码
file 文件名 
用于查看文件编码格式
utf8
gb2312 = iso8859

locale 查看编码格式
locale -a 查看所有支持的格式

字符集相关的配置文件
.bash_profile
.bashrc
可以设置 LC_ALL 或 LANG

配置文件:
i18n
locale.conf
可以设置 LANG

vim编码格式 不等于 文件编码格式
.vimrc
设置fileencoding

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值