admin

MYSQL特殊字符问题

sql

我一直有这个问题很久了,我多次在互联网上搜索解决方案,尝试了很多,但没有找到合适的解决方案。

我真的不知道该怎么办,如果可以的话,请帮助我,我将非常感激。
(对不起,我英语不好。)

问题: 如何解决输入档案和MYSql表之间的字符集不兼容?

问题: 从计算机上导入档案时,信息出现在数据库中,但是一些字符('茫', '莽', '谩', etc..)显示为?

附加信息

  1. 我正在使用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
    collat​​ion_connection:utf8_general_ci
    collat​​ion_database:utf8_general_ci
    collat​​ion_server:utf8_general_ci
    complete_type:NO_CHAIN
    parallel_insert:自动

  2. 正在使用的查询是:

    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. 关于要导入的文件:我用开放式办公室的3个字符集打开了文件:

UTF8-给我一些奇怪的字符代替“莽”,“茫茫”等…
ISO- 8859-1-好的。
WIN-1252-好。
ASCII / US-确定。

  1. 已经测试过:我已经在数据库中测试了一些字符集:latin1,utf-8,ascii,但是它们都给了我相同的结果(?而不是’谩’,’莽’等)。

  2. 另外:我使用Java和Java JDBC来生成和发送查询。


阅读 217

收藏
2021-06-07

共1个答案

admin

file.txt保存在ISO-8859-1或Windows-1252中(这两个非常相似),并被MySQL解释为UTF-8。这些是不兼容的。

我怎么知道?

  • 请参阅第3点:当文件解释为ISO-8859-1或Windows-1252时,文件显示正确。
  • 参见要点1 .: character_set_database:utf8

解决方案:将文件转换为UTF-8,或告诉MySQL将其解释为ISO-8859-1或Windows-1252。

背景:您提供的字符(等)是Windows-1252中的单字节值,而这些字节在UTF-8中是非法值,因此会产生“?”(Unicode替换字符)。

MySQL文档的片段:

LOAD DATA INFILE语法

由character_set_database系统变量指示的字符集用于解释文件中的信息。

2021-06-07