1

我正在使用 CKEditor,似乎可以使用正确的按键将以下 unicode 字符插入到 textarea 中。

U+200B ​ \xe2\x80\x8b 零宽度空间

现在,当我尝试将其保存到 MySQL 数据库中时,出现以下错误:-

MySql.Data.MySqlClient.MySqlException
Incorrect string value: '\xE2\x80\x8B </...' for column 'Content' at row 1

据我所知,我有几个选择:-

  1. 更改我表上的排序规则,但是我不完全确定这会对我使用 NHibernate 作为 ORM 的 c# MVC4 应用程序产生什么影响
  2. 在我插入数据库之前从字符串中删除 unicode,但是我并不完全如何做到这一点,即使它是正确的。
  3. 对于某些浏览器,这似乎是 CKEditor 中的一个错误,但是我想通过不等待修复来证明自己的未来。

所以我的问题只是解决这个问题的最佳选择是什么?

表结构

4

1 回答 1

1

显然你charset是Latin1。

您不应该尝试将 unicode 数据存储在 Latin1 列中。你可能不得不改变它:

ALTER TABLE campaignemail MODIFY Content LONGTEXT CHARACTER SET utf8

这样做时要小心,如果您错误地存储了“unicode-pretending-to-be-latin1”,这可能会使您的表值变得一团糟。


顺便说一句,这charset是用于从“字母”(严格来说:代码点)映射到“字节”的编码。

collation定义各种“字母”之间的相对顺序。If 用于搜索/排序列。

于 2013-08-08T11:57:35.743 回答