如何替换我只有 unicode 表示的字符?

Posted

技术标签:

【中文标题】如何替换我只有 unicode 表示的字符?【英文标题】:How can I replace a character from which I only have the unicode representation? 【发布时间】:2017-07-18 13:09:26 【问题描述】:

我有一个字符串,在 Notepad++ 中显示时显示为:

App.xEFxBFxBF35

tocken EFxBFxBF 接缝是一些应用程序无法处理的 UTF 实体(对我来说是红移)。

在记事本中,字符串读作

App.35

如何从 c# 中的字符串中删除此实体?

编辑

在 Visual Studio 中,字符串在调试器中显示为

"App.\uffff35"

编辑 1

最后发现,当我插入非拉丁字符时,该列的大小需要翻倍。

我通过查看 sql server 中列的字符长度创建了 redshift 表,并将该数字直接用于 redshift 中的列。这适用于具有拉丁字符的语言,但不适用于非拉丁字符。

我通过这个红移查询发现了不同的长度。

select  bit_length('M');
select  bit_length('Б');
select  bit_length('Ö');

回馈 8,16,16

【问题讨论】:

fileformat.info/info/unicode/char/ef/index.htm 和 fileformat.info/info/unicode/char/bf/index.htm 可能感兴趣。 您在 Redshift 中使用什么数据类型?您应该使用VARCHAR 而不是CHAR - 请参阅docs.aws.amazon.com/redshift/latest/dg/…。 我正在使用这个版本的 redhshift 并且上面有 varchar PostgreSQL 8.0.2 on i686-pc-linux-gnu,由 GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2 -6.fc3),红移 1.0.1385 【参考方案1】:

您有两个广泛的选择:

确保您的 Redshift 列是 VARCHAR(supports UTF-8)或 appropriate size Strip 将字符串中的所有非 ASCII 字符发送到 Redshift 之前

【讨论】:

以上是关于如何替换我只有 unicode 表示的字符?的主要内容,如果未能解决你的问题,请参考以下文章

uGUI 文本字段,如何删除“替换字符”(uFFFD aka �)?

如何将新字体应用于以特定字体编写的字符?

如何在 SQL 中处理 Unicode 替换字符 � (0xFFFD / 65533)

Vim 用 unicode 字符替换

GUI:如何确定是不是支持某些 Unicode 字符?

如何从雪花中删除 Unicode 替换字符