【发布时间】:2015-03-17 09:39:46
【问题描述】:
我有一个来自移动设备的文本输入。它包含表情符号。在 C# 中,我将文本设为
Text ???????? text
简单地说,我希望输出文本是
Text text
我正在尝试使用 rejex 从文本中删除所有此类表情符号.. 除了,我不确定如何将该表情符号转换为它的 unicode 序列.. 我怎么做?
编辑:
我正在尝试将用户输入保存到 mysql 中。看起来 mysql UTF8 并不真正支持 unicode 字符和 right way to do it would be by changing the schema,但我认为这不是我的选择。所以我试图在将其保存到数据库之前删除所有表情符号字符。
这是我的相关列的架构:
我使用 Nhibernate 作为我的 ORM,生成的插入查询如下所示:
Insert into `Content` (ContentTypeId, Comments, DateCreated)
values (?p0, ?p1, ?p2);
?p0 = 4 [Type: Int32 (0)]. ?p1 = 'Text ???????? text' [Type: String (20)], ?p2 = 19/01/2015 10:38:23 [Type: DateTime (0)]
当我从日志中复制此查询并直接在 mysql 上运行时,我收到此错误:
1 warning(s): 1366 Incorrect string value: '\xF0\x9F\x98\x80 t...' for column 'Comments' at row 1 0.000 sec
另外,我尝试将其转换为编码字节,但它并没有真正起作用..
【问题讨论】:
-
不太清楚您要实现什么 - 替换字符后您将如何处理字符串值?
-
@LocustHorde 您在哪个版本的 MySQL 上运行?似乎字符集 utf8mb4 应该使所有内容都成为 tikitiboo...在这里阅读答案stackoverflow.com/questions/24253985/…“似乎 MySQL 支持两种形式的 unicode ucs2,即每个字符 16 位和 utf8 每个字符最多 3 个字节。坏消息是这两种形式都不支持需要 17 位的平面 1 字符。(主要是表情符号)。看起来 MySQL 5.5.3 及更高版本也支持 utf8mb4、utf16 和 utf32 以及补充字符(阅读表情符号)"
-
来自stackoverflow.com/questions/10992921/… 的一些注意事项 "但是,请注意,基本多语言平面中还有其他字符被手机用作表情符号,但早于表情符号。例如 U+2665 是传统的 Heart Suit 字符 ♥,但在某些设备上可能会呈现为表情符号图形。您是否将其视为表情符号并尝试将其删除取决于您。"
-
Octopoid 的要点不会转换它们,它会删除它们。如果您只想删除不在 BMP 中的任何字符,这相当容易。