XML, содержащий японский язык, загружается как NULL с MySQL - PullRequest
1 голос
/ 31 мая 2019

Я использую Workbench и MySQL для загрузки файла XML в базу данных. Файл XML (который я не создал) содержит теги внутри тегов, некоторые из которых на японском языке. Я не уверен, правильно ли я имею дело с UTF-8.

Я попытался установить символы в utf8 и utf8mb4 и сопоставить с utf8mb4_unicode_520_ci, utf8_general_ci, utf8mb4_unicode_ci и utf8mb4_unicode_520_ci. Я также прочитал раздел справочного руководства по MySQL о китайских, корейских и японских (CKJ) символах. Кажется, что люди обычно получают "??" с ошибками CKJ, которые связаны с UTF8, но мы получаем NULL. Я пробовал переключаться между CHAR, VARCHAR, NVARCHAR и NCHAR тоже ...

В нашем XML есть записи типа:

<entry>
  <ent_seq>1000220</ent_seq>
  <k_ele>
    <keb>明白</keb>
    <ke_pri>ichi1</ke_pri>
    <ke_pri>news1</ke_pri>
    <ke_pri>nf10</ke_pri>
  </k_ele>
  <r_ele>
    <reb>めいはく</reb>
    <re_pri>ichi1</re_pri>
    <re_pri>news1</re_pri>
    <re_pri>nf10</re_pri>
  </r_ele>
  <sense>
    <pos>&adj-na;</pos>
    <gloss>obvious</gloss>
  </sense>
</entry>

И MySQL это:

CREATE DATABASE main_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE main_db;

CREATE TABLE IF NOT EXISTS jmdict(
  ent_seq VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL PRIMARY KEY,
  keb VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  reb VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  pos VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  lsource VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  gloss VARCHAR(2000)  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci # english
);

LOAD XML INFILE "[file location]"
INTO TABLE jmdict
CHARACTER SET utf8mb4
ROWS IDENTIFIED BY '<entry>';

Я ожидал иметь "明白" в поле keb и "め い は く" в поле reb, но вместо этого я получаю NULL в обоих этих полях (и я правильно получаю "1000220" в ent_seq, "& adj -na; "для pos и" overt "для глянца).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...