首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NET是否可以将Unicode转换为ASCII以删除“智能引号”等?

.NET是否可以将Unicode转换为ASCII以删除“智能引号”等?
EN

Stack Overflow用户
提问于 2011-05-29 02:34:06
回答 2查看 8K关注 0票数 18

我们的一些用户使用的电子邮件客户端不能处理Unicode,即使在邮件头中正确设置了编码等。

我想让他们收到的内容“正常化”。我们遇到的最大问题是用户将Microsoft Word中的内容复制粘贴到我们的web应用程序中,然后web应用程序通过电子邮件转发这些内容-包括分数、智能引号和Word为您插入的所有其他扩展Unicode字符。

我猜这个问题没有明确的解决方案,但在我坐下来开始编写大型查找表之前,有没有什么内置的方法可以让我开始呢?

基本上涉及到三个阶段。

首先,从其他正常字母中剥离重音-此is here的解决方案

代码语言:javascript
复制
This paragraph contains “smart quotes” and áccénts and ½ of the problem is fractions

转到

代码语言:javascript
复制
This paragraph contains “smart quotes” and accents and ½ of the problem is fractions

其次,将单个Unicode字符替换为等效的ASCII字符,以提供:

代码语言:javascript
复制
This paragraph contains "smart quotes" and accents and ½ of the problem is fractions

这是我希望在我实现自己的解决方案之前有一个解决方案的部分。最后,用合适的ASCII序列替换特定的字符--1/2到1/2,等等--我非常肯定这不是任何Unicode魔术本身所支持的,但是有人可能已经写了一个合适的查询表,我可以重复使用。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2012-10-16 03:56:57

在使用最初在Word中构建的字符串列表时,我自己也遇到了一些问题。我发现使用一个简单的"String".replace(current char/string, new char/string)命令就可以完美地工作。我使用的确切代码是智能引号,或者更准确地说: left ",right ",left ',and right‘如下所示:

代码语言:javascript
复制
StringName = StringName.Replace(ChrW(8216), "'")     ' Replaces any left ' with a normal '
StringName = StringName.Replace(ChrW(8217), "'")     ' Replaces any right ' with a normal '
StringName = StringName.Replace(ChrW(8220), """")    ' Replace any left " with a normal "
StringName = StringName.Replace(ChrW(8221), """")    ' Replace any right " with a normal "

我希望这篇文章能帮助那些仍然有这个问题的人!

票数 6
EN

Stack Overflow用户

发布于 2011-05-29 02:41:20

您不应该尝试将Unicode转换为ASCII,因为您最终会遇到更多问题而不是解决问题。

这就像尝试将1,114,112个代码点(Unicode 6.0)放入128个字符中。

你认为你会成功吗?

顺便说一句,Unicode中有很多引号,不仅是你提到的那些引号,而且如果你无论如何都想要进行转换,请记住转换将取决于地区。

检查ICU -包含最完整的Unicode转换例程。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6163646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档