在MySQL Workbench中查看日文字符

时间:2014-06-27 07:54:18

标签: mysql utf-8 character-encoding mysql-workbench

我已经尝试了This solution来说

ALTER TABLE title 
CHARACTER SET utf8
COLLATE utf8_unicode_ci;

好的,这里有一些屏幕截图可能对你有帮助。 problem showing image

更新

这是我插入日文字符时会发生什么。 Insert query



更新2

显示create table给出了这个

CREATE TABLE `productInfo` (
  `pID` int(11) NOT NULL AUTO_INCREMENT,
  `pOperation` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `year` year(4) DEFAULT NULL,
  `season` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
  `pName` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `category` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `margin1` text CHARACTER SET latin1,
  `margin2` text CHARACTER SET latin1,
  PRIMARY KEY (`pID`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

只是看到了 的 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
但现在看到了查询

SELECT character_set_name, collation_name
FROM information_schema.columns
WHERE table_schema = 'trac_data'
    AND table_name = 'productInfo'
    AND column_name = 'pOperation';

给出

character_set_name collation_name

'latin1'            'latin1_swedish_ci'

太奇怪了!

更新3

SELECT hex(pOperation),pOperation FROM trac_data.productInfo;

给出3F3F3F3F3F,这是实际'?'的十六进制代码而不是任何日文字符,这意味着没有日文字符存储

3 个答案:

答案 0 :(得分:3)

您的表结构中混合了多个字符集。表本身使用utf8,但有问题的列使用拉丁语1.您可以通过这种方式定义它。只要您的列具有自己的字符集,就可以将表格或模式列更改一千次。它不会对您的专栏产生任何影响。因此,将列的字符集更改为默认值(使用表的字符串)或使用utf8明确表示。

当您更改列的charset时,现有数据将被转换(如果可能)。但错误的输入仍然是错误的,因此您必须重新填写数据。

答案 1 :(得分:0)

好的,我找到了原因

CREATE TABLE `productInfo` (
  `pID` int(11) NOT NULL AUTO_INCREMENT,
  `pOperation` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `year` year(4) DEFAULT NULL,
  `season` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
  `pName` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `category` varchar(40) CHARACTER SET latin1 DEFAULT NULL,
  `margin1` text CHARACTER SET latin1,
  `margin2` text CHARACTER SET latin1,
  PRIMARY KEY (`pID`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

我注意到每列 SET latin1 的前面是如何出现的。
所以我改为 sjis ,问题解决了。

答案 2 :(得分:-1)

您必须将数据库归类设置为UTF-8,而不仅仅是表归类:

enter image description here

以下是SQL脚本结果:

enter image description here