相关疑难解决方法(0)

MySQL抛出错误的字符串值错误

我正在尝试将以下推文存储到longtext列/ utf8 charset/MySQL 5.5中.带有MyISAM存储的数据库.

我们也尝试过utf8mb4,utf16,utf32字符集,但无法解决这个问题.

tweet="@Dorable_Dimples: Okay enough of those #IfYouWereMines I'm getting dep
ressed. #foreveralone ?" lol yes

mysql> ALTER DATABASE foo CHARACTER SET utf8 COLLATE utf8_bin;

mysql> show variables like 'char%';
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /rdsdbbin/mysql-5.5.12.R1/share/charsets/ | …
Run Code Online (Sandbox Code Playgroud)

mysql hibernate utf-8 utf8mb4

36
推荐指数
4
解决办法
4万
查看次数

如何使用javascript删除表情符号代码?

如何使用JavaScript删除表情符号代码?我以为我使用下面的代码照顾它,但我仍然有像这样的字符.

function removeInvalidChars() {
    return this.replace(/[\uE000-\uF8FF]/g, '');
}
Run Code Online (Sandbox Code Playgroud)

javascript unicode emoji

26
推荐指数
8
解决办法
4万
查看次数

检测*all*emojis

现在我正在使用这段代码:

public static bool ContainsEmoji(this string text)
{
    Regex rgx = new Regex(@"\p{Cs}");
    return rgx.IsMatch(text);
}
Run Code Online (Sandbox Code Playgroud)

它有点帮助.

他们中的大多数似乎被发现,但有些则没有.

以下是帮助的参考列表:http://unicode.org/emoji/charts/full-emoji-list.html

所有的笑脸似乎都很好,但这些特定的表情符号并没有被正则表达式所抓住:

1920 U +2614☔雨伞下雨

1921年U +26F1⛱伞在地上

1922年U +26A1⚡高压

1923年U + 2744❄雪花

在键盘上这些并不是彼此靠近,但在列表中它们是相互跟随的,所以我只是假设有一个点它将开始不在表情符号列表中工作,并且它不是真正的验证.从1905年(天气般的表情符号),下降,一些被捕获在正则表达式,一些不是.似乎没有任何规则.

我不能只是去全ASCII,因为我需要人们输入像西里尔字母这样的字符,但我不能特别接受表情符号.我不知道如何从这里前进.

我阅读了关于代理高/低对MSDN文档,但在这个阶段这对我来说非常混乱,我认为一些正确的方向推进将会有很长的路要走.

非常感谢您的宝贵时间 :)

c# regex string char emoji

12
推荐指数
2
解决办法
3643
查看次数

MSSQL到MySQL迁移 - 使用UCS-2代理对的char编码问题,如何从MSSQL数据库中删除这些?

我的任务是将Microsoft SQL Server 2005数据库迁移到MySQL 5.6(这些都是本地运行的数据库服务器),非常感谢一些帮助.

-MSSQL源数据库有latin1归类(所以ISO 8859-1字符集对吗?)但是没有任何char/varchar字段(任何字符串字段是nvarchar/nchar)所以所有这些数据都应该使用UCS-2字符组.

-MySQL目标数据库想要字符集UTF-8

我决定在最新版本的MySQL工作台中使用数据库迁移工具包.起初它工作正常,并按预期迁移一切.但是在遇到MSSQL数据库中的UCS-2代理对字符时,我完全被绊倒了.

迁移工具包copytable程序没有提供非常有用的错误消息:"在wstring的charset转换期间出错:没有错误".它也没有提供有关引起问题的数据的任何字段/行信息,并且会在100行的块内失败.因此,在最后一次成功插入后搜索了100行后,我发现问题似乎是由其中一个nvarchar字段中的两个UCS-2字符引起的.它们在UCS-2字符集中列为代理对.它们特别是字符DBC0和DC83(我通过查看字段的二进制数据并将字节对(little endian)与正在成功迁移的数据进行比较得到了这一点).

当从MSSQL数据库中删除此代理对时,该行已成功迁移到MySQL.

这是问题所在:

我试图在测试MSSQL表中搜索这些字符(这个chartest表只是各种测试字符串和nvarchar字段)来准备替换脚本并不断得到奇怪的结果......我必须做错误的事情.

正在寻找

SELECT * FROM chartest WHERE text LIKE NCHAR(0xdc83)
Run Code Online (Sandbox Code Playgroud)

将返回任何代理对字符(无论它是否使用DC83),但显然,只有它是该字段中唯一的字符(或对的一部分).这不是什么大问题,因为我想删除这些的任何实例(我不想删除这样的数据,但我认为我们可以负担得起).

正在寻找

SELECT * FROM chartest WHERE text LIKE '%' + (NCHAR(0xdc83))+ '%'
Run Code Online (Sandbox Code Playgroud)

将返回每一行!无论它是否在场中都有unicode字符,更不用说DC83字符了.有没有更好的方法来查找和替换这些字符?或者别的什么我应该尝试?

我也尝试将目标数据库,表格和字段字符集设置为UCS-2,但似乎没有什么区别.

我还要提一下,这次迁移是使用实时数据(~50GB数据库!),而其中一个提供它的网站是脱机的,因此任何解决方案都需要快速运行...

非常感谢任何建议!如果我遗漏了任何信息,请告诉我.

mysql sql-server migration character-encoding

5
推荐指数
1
解决办法
6437
查看次数

如何从字符串中删除非 ASCII - C#

我想从字符串中删除表情符号,但它不起作用

\n\n
string str = "Hello world \xe2\x98\x80\xe2\x9b\xbf"; \nstring result = Regex.Replace(str, @"\\p{Cs}", "");\n
Run Code Online (Sandbox Code Playgroud)\n

c# regex emoji

3
推荐指数
1
解决办法
5736
查看次数