在MySQL表中存储Unicode和特殊字符

时间:2018-03-25 12:28:37

标签: java mysql unicode

我目前的要求是存储Unicode和其他特殊字符,例如MySQL表中的双引号。为此目的,正如许多人所建议的那样,我们应该使用Apache的 StringEscapeUtils.escapeJava()方法。问题是,虽然这种方法确实用它们各自的unicodes(\ uxxxx)替换特殊字符,但是MySQL表将它们存储为uxxxx而不是\ uxxxx。因此,当我尝试从数据库中提取时对其进行解码时, StringEscapeUtils.unescapeJava()会失败(因为它无法找到' \')。

以下是我的问题:

  1. 为什么会这样(也就是说,表格会跳过' \#39;)。
  2. 这是什么解决方案?

1 个答案:

答案 0 :(得分:0)

请勿使用Unicode“codepoints”(\uxxxx),请使用UTF8。

不要'使用任何特殊功能。而是宣布一切都是UTF-8(MySQL中的utf8mb4)。

请参阅Best Practice

(如果你被提供\uxxxx,那么你将不得不首先转换为utf8。如果你真正的问题是如何转换,那就问问那样。) `