2012-10-05 3 views
0

read-line을 사용하여 읽고있는 일부 데이터가 있는데이 데이터를 바이트 배열로 변환하려고합니다. babel:string-to-octet은 문자 \ byte가 큼 (200 이상) 인 경우를 제외하고는 대부분 두 부분을 반환합니다. 예를 들어 문자가 ú 인 경우 babel:string-to-octet을 사용하면 250 대신 (195 185)을 반환합니다. 이는 내가 찾고있는 것입니다. 나는 바벨 (babel)에서 여러 가지 인코딩을 시도했지만 그 중 아무 것도 작동하지 않는 것 같습니다.문자열/문자를 lisp의 바이트로 변환하는 데 문제가 있습니다

read-byte 또는 read-sequence을 사용하는 경우 250으로 읽습니다. 그러나 이전 버전과의 호환성을 이유로 read-line을 사용하고 있으며 babel:string-to-octet을 사용하여 누락 된 부분이 있는지 알고 싶습니다. ú250으로 변환하십시오.

저는 1.8btw의 ccl을 사용하고 있습니다.

+0

물론 질문을하는 순간, 대답을 찾았습니다. ccl : encode-string-to-octets을 사용하면 문제가 해결되었습니다. ccl과 babel 버전간에 차이점이 무엇인지 모르겠습니다. 또한이 문제가 해결 되었기 때문에이 질문을 삭제해야하는지 확실하지 않습니다. – WanderingPhd

+2

ISO-8859 대 UTF-8 인 경우 문자 인코딩을 읽어보십시오. – starblue

+0

감사합니다. @starblue. 대부분의 인코딩을 시도했지만 ISO-8859-15를 시도하지 않은 것으로 추측됩니다. 마침내 바벨을 사용하여 저에게 효과적이었습니다. – WanderingPhd

답변

0

대부분의 common-lisp 구현에서 256 자 이상 지원됩니다. 비둘기 원칙에 따르면 모든 문자를 단일 바이트로 변환 할 수 없다는 의미입니다.

lisp 내부 문자 코드 0-255를 바이트로 변환하려는 경우 char-code가 원하는 것을 수행합니다. 다만, 구현은 내부적으로 특정의 인코딩을 사용할 필요는 없기 때문에, 결과는 구현으로 정의됩니다.

관련 문제