Как я кодирую некрасивую строку? - PullRequest
0 голосов
/ 17 февраля 2009

У меня есть строка:

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

Я отправляю это на сервис и использую Htmlencode, затем получаю результат:

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

это не результат, который мне нужен, как я получаю оригинальную строку? спасибо!

Ответы [ 2 ]

5 голосов
/ 17 февраля 2009

Ваша строка не является ASCII, поэтому вы используете строку для представления двоичных данных или не поддерживаете осведомленность о многобайтовом кодировании. В любом случае, самый простой способ справиться с любой интернет-технологией (HTTP, SMTP, POP, IMAP) - это закодировать ее как 7-битную чистоту. Один из распространенных способов - это base64-кодирование ваших данных, их передача по проводам, а затем base64-декодирование, прежде чем пытаться их обработать.

1 голос
/ 17 февраля 2009

Я считаю, что это то, что вы ищете:

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

Вам просто нужно использовать более качественную HTML-библиотеку / инструмент кодирования. Тот, который я использовал для генерации этого кода, основан на Ruby - я использовал библиотеку HTML Entities . Код, который я написал для этого, следующий. Мне пришлось поместить ваш текст в input.txt, чтобы сохранить Unicode (в строке был символ EOF), но он отлично работал.

require 'rubygems'
require 'htmlentities'

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

coder = HTMLEntities.new
puts coder.encode(str, :named)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...