我如何编码丑陋的字符串?

时间:2009-02-17 02:54:07

标签: asp.net unicode

我有一个字符串:

!"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]\^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª« ®¯°±²³´µ¶•¸¹º»¼½¾¿ÀÁÂÃÄÅàáâäèçéêëìíîïôö÷òóõùúý

我将其发布到服务并使用Htmlencode,然后我得到一个结果:

!#$%&'()* ,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~����������� ���������•������������������������������������

这不是我需要的结果,我怎么得到原始字符串?谢谢!

2 个答案:

答案 0 :(得分:5)

您的字符串不是ASCII,因此您要么使用字符串来表示二进制数据,要么不保持对多字节编码的认识。无论如何,处理任何基于Internet的技术(HTTP,SMTP,POP,IMAP)的最简单方法是将其编码为7位干净。一种常见的方法是对数据进行base64编码,通过网络发送,然后在尝试处理之前对其进行base64解码。

答案 1 :(得分:1)

我相信这就是你要找的东西:

!"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]\\^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«®¯°±²³´µ¶•¸¹º»¼½¾¿ÀÁÂÃÄÅàáâäèçéêëìíîïôö÷òóõùúý

您只需要使用更好的html实体/编码库或工具。我用来生成它的那个来自Ruby - 我使用了HTML Entities library。我写的代码是这样做的。我必须将你的文本放在input.txt中以保留Unicode(字符串中有一个EOF字符),但它工作得很好。

require 'rubygems'
require 'htmlentities'

str = File.read('input.txt')

coder = HTMLEntities.new
puts coder.encode(str, :named)