我有一个字符串:
!"#$%&'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]\^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª« ®¯°±²³´µ¶•¸¹º»¼½¾¿ÀÁÂÃÄÅàáâäèçéêëìíîïôö÷òóõùúý
我将其发布到服务并使用Htmlencode,然后我得到一个结果:
!#$%&'()* ,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~����������� ���������•������������������������������������
这不是我需要的结果,我怎么得到原始字符串?谢谢!
答案 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)