2014-04-05 3 views
4

RTF 파서에서 유니 코드를 처리하는 데 어려움이 있습니다.RTF 파일에서 값> 32767 인 유니 코드 구문 분석

"32767보다 큰 유니 코드 값은 음수로 표현되어야합니다"(http://www.biblioscape.com/rtf15_spec.htm#Heading9)이며 유니 코드 숫자 값을 얻으려면이 음수에 65536을 추가하십시오.

내가 유니 코드 문자 32767 및 32768 워드 (Mac에서 v2011)로 문서를 설정하여이 시나리오를 테스트되었다 사람들이 개 문자에 대해 다음 RTF 구문을 생성합니다

두 번째를 들어
\u32767\'5f\loch\af556\hich\af31506\dbch\f556 \uc2\u-32768\'97\'73 

- 32768 + 65536은 예상대로 32768입니다. 따라서 \ uNNNN 명령은 의미가 있습니다.

제 문제는 \ '97 \ '73과 같은 텍스트 이스케이프 시퀀스입니다. 나는 그것이 왜 있는지 이해하지 못한다. 필자는 파서가 \ uNNNN 명령의 끝 부분에 연결된 명령을 무시하도록 작성할 수 있습니다. 하지만 텍스트 편집기의 RTF 출력과 비교하고, 텍스트 이스케이프 시퀀스를 출력합니다 즉 더블 바이트 유니 코드 이스케이프 시퀀스 되려고 노력하는 것처럼

\uc0\u32767 \'97\'73 

보인다. 그리고 그런 종류의 \ '텍스트 이스케이프는 16 진수입니다. 그러나 0x9773은 32768이 아닌 38771이므로 원하는 데이터를 원하는 유니 코드 값으로 추출하는 방법을 이해하지 못합니다. 어떤 아이디어?

업데이트 : 텍스트 편집기는 문자 코드를 처리하는 방법을보고 몇 가지 더 테스트를 실행 32767 - 32777. 그들은 RTF에서 다음과 같이 :

\u32767 
\'97\'73 
\'98\'56 
\u32770 
\'8d\'6c 
\'e3\'cc 
\'8e\'d2 
\'e3\'cb 
\u32775 
\u32776 
\'c2\'56 

이 RTF는 너무 명확하게, 텍스트 편집기 및 Word 모두에서 제대로로드 그것은 유효합니다. 나는 여기서 패턴을 보지 못했다.

답변

0

RTF의 \ u 태그 다음에 ASCII 또는 멀티 바이트 문자 집합을 사용하여 유니 코드 문자를 나타내는 대체 문자 수를 표시합니다. 이것은 \ u 태그를 지원하지 않는 오래된 RTF 리더와의 역 호환성을위한 것입니다. 유니 코드 문자를 나타내는 데 필요한 대체 문자의 수는 \ uc 태그로 지정됩니다. 멀티 바이트 문자 집합에 대한 유니 코드 문자에는이를 나타내는 다중 대체 문자가 필요하므로 2 이상의 \ uc 태그 값이 필요합니다. 대부분의 현대 RTF 리더는 단순히 대체 문자를 무시하므로 값은 더 이상 중요하지 않습니다. 패턴에 관한 귀하의 질문에 대한 답변이되기를 바랍니다.

관련 문제