2009-11-13 6 views
1

누구든지 유니 코드 (16 비트)에서 C 비트로 7 비트 ASCII로 변환하는 데 도움이 될 수 있습니까?유니 코드 (16 비트) 데이터를 7 비트 ASCII로 변환

+1

ñ (U + 00F1) 매핑을 "일반"n과 같은 멋진 정보가 필요합니까? – MSalters

+0

어떻게 매핑해야합니까? ASCII로 표시되지 않는 유니 코드 문자로 수행해야하는 작업은 무엇입니까? – jalf

답변

5

유니 코드 문자 0..127을 ASCII 세트로 ​​매핑 할 수 있습니다. 다른 문자에는 7 비트 ASCII가 없습니다. 그걸로 뭘하고 싶니?

3

이러한 변환을 처리하기위한 C++ 언어 자체에는 아무 것도 없습니다. 대신 RTL/API 함수를 사용해야합니다. 예를 들어, 앱이 Windows 플랫폼에서 실행되는 경우 Win32 API WideCharToMultiByte() 함수를 사용할 수 있습니다. 좀 더 이식성있는 것을 원한다면 GNU의 iconv 라이브러리를보십시오.

또는 간단히 변환을 수동으로 수행 할 수 있습니다. 유니 코드 UTF-16은 손으로 디코딩하기가 매우 쉽습니다. 거기에서 0-127의 값은 ASCII 값입니다.

+0

Thanx alot 4 answring – dweep

+0

대상이 ASCII이기 때문에 UTF16을 변환하는 것을 신경 쓸 필요가 없습니다. 127 자 이상의 모든 문자를 삭제하면됩니다. –

2

더블 바이트 유니 코드 문자를 ASCII 문자 집합으로 표시 할 수있는 문자를 제공하는 utf7로 변환하려고합니다. 가장 높은 비트가 설정된 문자를 처리 할 수없는 골동품 시스템이 왜곡되지 않도록합니다. 멀티 바이트 문자를 여러 문자로 분할합니다 (ASCII로 읽는 경우).

예제 코드는 ibiblio.org (빠른 Google 검색에서)에서 찾을 수 있습니다. 알 수없는 라이센스.

+1

UTF-7 대신 UTF-8을 사용하십시오. 모든 ASCII 문자는 UTF-8로있는 그대로 표시되며 문자 당 여러 바이트를 사용하지 않습니다. 일부 ASCII 문자는 예약되어 있고 인코딩이 필요하기 때문에 UTF-7에 대해서도 마찬가지입니다. UTF-7은 UTF-16과 인코딩 된 모든 문자에 대해 Base64의 수정 된 버전을 모두 포함하므로 UTF-8보다 복잡합니다. UTF-8은 그 일을하지 않습니다. –

+1

예, utf-8이 선호됩니다. 그러나 원래의 질문은 7 비트로 표현 될 수있는 문자를 원했습니다. – sisve

+0

정확히 UTF-8이 ASCII 문자의 역할을합니다. –

관련 문제