如何替换我只有 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 �)?