当我在MySQL命令行运行它时,它运行正常:
if (window.addEventListener) {
window.addEventListener('DOMContentLoaded', openNews(0));
} else {
window.attachEvent('onload', openNews(0));
}
'ä'和'ö'最终在MySQL varchar列中结束。
但是,当我在文件中放入相同的数据时,使用
INSERT INTO MYTABLE VALUES(NULL,101942,'2015-05-08','sähkötupakalle');
然后'ä'和'ö'被破坏了,我最终得到了MySQL varchar列中的数据,如下所示:
LOAD DATA LOCAL INFILE
关于如何使用“LOAD DATA LOCAL INFILE”正确加载这些字符的任何想法?仅供我,我的桌子有CHARSET = utf8。
答案 0 :(得分:1)
显然你加载的文件是用utf8正确编码的?但是你没有包含CHARACTER SET utf8
条款?
" Mojibake" 的症状
当SELECTing
文本时,每个非英文字符被2-3个字符替换,您可以将其称为乱码或垃圾。
你是如何陷入困境的:
INSERTed
的客户端字节编码为utf8(好),latin1
(例如,通过SET NAMES latin1
)和CHARACTER SET latin1
如何修复文字和表格:
执行两步ALTER
:
ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
长度足够大而另一个长度足够..." ..."还有其他任何东西(NOT NULL
等)已经在列上。
转换列定义,同时保留位。
如何修复代码(一般情况下):
utf8
- 通过SET NAMES utf8
或同等身份。