数据库值在特殊字符处被截断
Database value being truncated at special character
我已经从本地 MySQL Workbench 导出了我的数据库,我刚刚尝试 运行 它在我的实时服务器上并且一切都成功插入。
只要有特殊字符,就会对某些字段进行 运行 分类,因此 'This is a £ test'
变为 'This is a '
。
我假设这是一个编码问题,但是实时和本地数据库都有 UTF8_unicode_CI 作为排序规则。
截断症状:
当SELECTing
文字时,不是全部;特别是它在第一个非英语字符之前被截断。
你是怎么惹上麻烦的:
- 客户端的字节要
INSERTed
进入table被编码为latin1
,而
- 连接的字符集是
utf8
(例如,通过SET NAMES utf8
),并且
- 已声明 table 列
CHARACTER SET utf8
如何修复文字和 table:
- 文本无法恢复。
- 该列已经是
utf8
,因此无需更改。
如何修复代码:
- 如果您继续使用 latin1 编码的文本,请将连接的字符集更改为 latin1。
我已经从本地 MySQL Workbench 导出了我的数据库,我刚刚尝试 运行 它在我的实时服务器上并且一切都成功插入。
只要有特殊字符,就会对某些字段进行 运行 分类,因此 'This is a £ test'
变为 'This is a '
。
我假设这是一个编码问题,但是实时和本地数据库都有 UTF8_unicode_CI 作为排序规则。
截断症状:
当SELECTing
文字时,不是全部;特别是它在第一个非英语字符之前被截断。
你是怎么惹上麻烦的:
- 客户端的字节要
INSERTed
进入table被编码为latin1
,而 - 连接的字符集是
utf8
(例如,通过SET NAMES utf8
),并且 - 已声明 table 列
CHARACTER SET utf8
如何修复文字和 table:
- 文本无法恢复。
- 该列已经是
utf8
,因此无需更改。
如何修复代码:
- 如果您继续使用 latin1 编码的文本,请将连接的字符集更改为 latin1。