我一直有这个问题很久了,我多次在互联网上搜索解决方案,尝试了很多,但没有找到合适的解决方案。
我真的不知道该怎么办,如果可以的话,请帮助我,我将非常感激。 (对不起,我英语不好。)
问题: 如何解决输入档案和MYSql表之间的字符集不兼容?
问题: 从计算机上导入档案时,信息出现在数据库中,但是一些字符('茫', '莽', '谩', etc..)显示为?。
('茫', '莽', '谩', etc..)
?
附加信息
我正在使用MYSql,我的版本和变量状态为:
MySQL版本:5.5.10
主机:本地主机 使用者:root 端口:3306 服务器默认字符集:utf8 character_set_client:utf8 character_set_connection:utf8 character_set_database:utf8 character_set_filesystem:二进制 character_set_results:utf8 character_set_server:utf8 character_set_system:utf8 collation_connection:utf8_general_ci collation_database:utf8_general_ci collation_server:utf8_general_ci complete_type:NO_CHAIN parallel_insert:自动
正在使用的查询是:
LOAD DATA LOCAL INFILE 'xxxxx/file.txt'
INTO TABLE xxxxTable FIELDS TERMINATED BY ‘;’ LINES TERMINATED BY ‘ ‘ IGNORE 1 LINES ( status_ordenar,numero,newstatus,rede,data_emissao,inicio,termino,tempo_indisp , cli_afet,qtd_cli_afet,cod_encerr,uf_ofensor,localidades,clientes_afetados , especificacao,equipamentos,area_ofens,descricao_encerr,criticidade,cod_erro , observacao,id_falha_perc,id_falha_conf,nba,solucao,falhapercebida,falhaconfirmada , resp_i,resp_f,resp_ue,pre_handover,falha_identificada,report_netcool,tipo_falha , num_notificacao,equip_afetados,descricao)
关于要导入的文件:我用开放式办公室的3个字符集打开了文件:
UTF8-给我一些奇怪的字符代替“莽”,“茫茫”等… ISO- 8859-1-好的。 WIN-1252-好。 ASCII / US-确定。
已经测试过:我已经在数据库中测试了一些字符集:latin1,utf-8,ascii,但是它们都给了我相同的结果(?而不是’谩’,’莽’等)。
另外:我使用Java和Java JDBC来生成和发送查询。
file.txt保存在ISO-8859-1或Windows-1252中(这两个非常相似),并被MySQL解释为UTF-8。这些是不兼容的。
我怎么知道?
解决方案:将文件转换为UTF-8,或告诉MySQL将其解释为ISO-8859-1或Windows-1252。
背景:您提供的字符(等)是Windows-1252中的单字节值,而这些字节在UTF-8中是非法值,因此会产生“?”(Unicode替换字符)。
MySQL文档的片段:
LOAD DATA INFILE语法 由character_set_database系统变量指示的字符集用于解释文件中的信息。
LOAD DATA INFILE语法
由character_set_database系统变量指示的字符集用于解释文件中的信息。