法语/英语和日语的 SQL 条目

Posted

技术标签:

【中文标题】法语/英语和日语的 SQL 条目【英文标题】:SQL entries in French/English and Japanese 【发布时间】:2019-12-19 13:51:42 【问题描述】:

我有一个旧的 SQL4 数据库,我正在尝试将它重新上传到我们在 phpmyadmin 上新创建的数据库。表中的字符是拉丁文和日文。我试图更改那些特定的列,但结果仍然是我需要用日语显示的列的损坏字符。

这是我的问题的截图:https://imgur.com/a/P6GWrnF

例如,SQL 代码如下所示:


CREATE TABLE `bdd` (
  `id` int(11) NOT NULL,
  `ville` varchar(50) NOT NULL DEFAULT '',
  `nom_fr` varchar(80) NOT NULL DEFAULT '',
  `nom_jp` varchar(250) CHARACTER SET sjis NOT NULL DEFAULT '',
  `adr_fr` text NOT NULL,
  `adr_jp` varchar(3000) CHARACTER SET sjis NOT NULL,
  `tel` varchar(20) NOT NULL DEFAULT '0',
  `plan` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `bdd` (`id`, `ville`, `nom_fr`, `nom_jp`, `adr_fr`, `adr_jp`, `tel`, `plan`) VALUES
(47, 'Tokyo', 'THE KNOT TOKYO Shinjuku', '?U ?m?b?g ?????V?h', '4-31-1 Nishi Shinjuku, Shinjuku Ku, Tokyo', '?????s?V?h???V?h4-31-1', '03-3375-6511', 'the knot.JPG'),
(3546, 'Tokyo', 'HOSHINOYA Tokyo', '???????', '1-9-1 Otemachi, Chiyoda-ku, Tokyo 100-0004', '??100-0004 ?????s?????c??????????9??1', '0570-073-066', 'HOSHINOYA TOKYO.JPG'),

【问题讨论】:

mysql.rjweb.org/… 问号代表已经损坏编码。您需要恢复到数据损坏之前。你能从源数据集中得到十六进制吗? 看来损害确实已经造成了。这是原始的SQL源文件:codeshare.io/5wV6Wp当时没有损坏,只是在我重新导入数据时将文件更改为unicode之后。 【参考方案1】:
SET NAMES "utf8";
CREATE TABLE `bdd` (
  `id` int(11) NOT NULL,
  `ville` varchar(50) NOT NULL DEFAULT '',
  `nom_fr` varchar(80) NOT NULL DEFAULT '',
  `nom_jp` varchar(250) CHARACTER SET sjis NOT NULL DEFAULT '',
  `adr_fr` text NOT NULL,
  `adr_jp` varchar(3000) CHARACTER SET sjis NOT NULL,
  `tel` varchar(20) NOT NULL DEFAULT '0',
  `plan` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT whatever you want

如果您将所有内容都存储在 utf8 中会更好,因为您有多种语言。在插入之前,您需要相应地设置连接参数,以便服务器可以了解您发送的内容。顺便说一句,也许你必须 SET NAMES 'sjis';

【讨论】:

我重新上传了数据库。我的所有专栏都在 utf8_general_ci 中,两个日语专栏都在 sjis_japanese_ci 中。但它仍然显示那种文本“?U ?m?b?g ?????V?h”。我应该在某处添加SET NAMES 'sjis'; 吗?如何将其限制为仅这两列?谢谢。 @DestinationJapon - 数据是如何转储的? SET NAMES 'sjis'; 是您任何其他 SQL 命令之前执行的命令。顺便说一句,真的检查你插入的数据,因为你给我的样本只包含问号而不是日本符号 在我从旧数据库中提取的未更改的 SQL 文件中,我得到了像 'ã–ìƒTƒbƒgƒ“ƒvƒŒƒCƒXƒzƒeƒ‹' 这样的符号,所以在更改为 Unicode 时可能出现了问题。这个旧文件是 ANSI 格式的。我将/*!40101 SET NAMES latin1 */; 更改为SET NAMES "utf8"; 并为某些列设置了日语,因为它没有设置。旧文件:`nom_jp varchar(250) NOT NULL default '',` 新文件:`nom_jp varchar(250) CHARACTER SET sjis NOT NULL DEFAULT '',` 我唯一改变的另一件事是这个TYPE=MyISAM AUTO_INCREMENT=3688 ;到这个ENGINE=MyISAM AUTO_INCREMENT=3688 ;【参考方案2】:

问题解决了。 我不再尝试更改编码,而是创建了一个包含 utf8mb4_unicode_ci 中所有行的新表,并将数据导入到这个新表中。

【讨论】:

以上是关于法语/英语和日语的 SQL 条目的主要内容,如果未能解决你的问题,请参考以下文章

sql语句统计数量 统计一个字段出现的数量

MFC 多语言应用程序 - 英语、法语、西班牙语和韩语

Excel VBA 复选框英语与法语

SQL语言必须大写吗?

使用数组的简单 Java 英语到法语单词翻译

求人教版七年级上册英语单词表