2009-11-22 4 views
0

URL에서 읽는 Im 및 그들은 종종 인코딩 된 문자 퍼센트가 있습니다.인코딩 된 UTF-8에서 Ascii (8 비트)로 변환

예 : %의 C3의 %의 A9는

http://www.microsystools.com/products/sitemap-generator/faq/character-percentage-url-encoding/에 따르면, 8 비트 ASCII (128-255)의 상반부 문자 UTF-8 인코딩되고 전자 실제로, 그들의 바이트 진수로 저장 . 자, URL을 얻을 때 % HEX는 8 비트 ascii로 다시 인코딩되었고, 다시 원래의 8 비트 ASCII로 변환해야합니다. 사용할 수있는 함수/라이브러리가 있습니까? 아니면 변환에 대해 어떻게 생각합니까?

Im는 C/C++를 사용합니다.

+0

언어를 지정하십시오. –

+0

Im usimg C/C++, – zacaj

+1

오늘은 누군가가 8 비트 ASCII에 대해 이야기하고있는 두 번째 시간입니다. 그게 뭔가요? ASCII는 7 비트를 사용합니다. Latin1 (그리고 다른 문자 집합 전체)은 8 비트를 사용하며 ASCII의 상위 집합 인 경우가 많지만 그런 이유로 "8 비트 ASCII"라고하지는 않습니다. 따라서 "8 비트 ASCII" 비트 ASCII "? – Epcylon

답변

1

먼저 URLDecode가 필요합니다. 크로스 플랫폼 C++에서 사용할 수있는 함수는 아니지만 운좋게도 어려운 문제는 아닙니다. 원본에서 대상으로 바이트를 복사합니다. 비 바이트 (%) 바이트 만 복사됩니다. % xx를 누를 때 16 진수 문자에서 2 진수로 XX를 변환하면 바이트가 생깁니다.

이것은 UTF-8 텍스트 버퍼를 제공합니다. 당신은 당신이 'ASCII'- ISO-646을 원한다고 말합니다. 그렇다면 악센트를 부여 할 수 없습니다. 나는 당신이 정말로 원하는 것에 대한 몇 가지 가능성을 생각할 수 있습니다 :

  1. ISO-8859-1. ICU를 사용하여 UTF-8을 ISO-8859-1로 변환 할 수 있습니다.
  2. ISO-646. ICU를 사용할 수도 있습니다. ISO-646에 해당하는 문자를 강조 표시합니다.