乱码
字符集
编码格式
文件编码格式
指的是我们编写的代码保存的编码格式或者要读取文件的编码格式。
操作系统默认的编码格式
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