Я использую 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 "для глянца).