2

특정 특수 문자가있는 페이지가 있으며 자바 스크립트를 통해 값을 가져올 때 이상한 변환이 발생합니다. 문자 'Œ'는 'R'로 돌아가고 소문자 'œ'는 'S'로 되돌아갑니다. 이것은 javascript의 한계입니까 아니면 브라우저 일 수 있습니까? 이것은 파이어 폭스에서 테스트 한 것입니다. 또한 이것은 repl 클라이언트 (Jssh/MozRepl)를 통해 검색되므로 브라우저가 아닌 클라이언트 자체에서 문제가 될 수 있습니다.Javascript 특수 문자가 잘못 반환 됨

답변

3

어딘가에 인코딩 문제가있을 수 있습니다. 텍스트 인코딩을 잘못 처리 할 수있는 기회가 많이 있습니다. 일부 코드를 게시 할 경우 해당 코드를 찾을 수 있도록 도와 줄 수 있습니다.

+0

var outstream = transport.openOutputStream (Ci.nsITransport.OPEN_BLOCKING, 0, 0); 이것은 자바 스크립트에서 사용하고있는 출력 스트림입니다. (별로 도움이되지 않는데도 내가 말할 수있는 것은 무엇이든간에 파이어 폭스에서 설정할 수 있습니다) –

+1

분명히 파이어 폭스는 nsITransport 스트림이 UTF-8로 설정되어 있기 때문에 255보다 큰 문자는 올바르게 나타나지 않습니다. –

+0

해결 방법을 공유 할 수 있습니까? 어쩌면 일부 샘플 코드가 도움이 될 것입니다. –

0

출력 스트림은 비 ASCII 문자에 대해 스크립트로 안전하지 않으므로 스트림을 nsIBinaryOutputStream, nsIUnicharOutputStream 또는 nsIConverterOutputStream에 래핑해야합니다.

+0

방금 ​​문자 코드 배열로 변환하여 출력하고 대신 변환했습니다. 255 자 이상의 코드를 가진 문자 만있었습니다. nsITransport에 대한 좋은 문서를 보지 못했지만 openOutputStream을 사용하여 해당 스트림을 열 수 있습니까? –

+0

래퍼 스트림을 초기화 할 때 매개 변수로 기존 스트림을 전달합니다. – Neil

관련 문제