2014-04-08 1 views
3

루비 1.9.3-p484에서 SMPP 패키지를 만들어야하지만, 전달 된 메소드의 문자열에 구성된 패킷의 내용을 전달할 때 이상한 \xC2 값이 내용에 나타납니다.Ruby의 문자열 인코딩 문제

"\u008E".force_encoding("BINARY") 
=> "\xC2\x8E" 

\u00BE 내가 바이너리 인코딩을 사용하려면 \xC2\8E 될 않습니다 문제를 조사하는 데, 나는 다음과 같은 흥미로운 잡았다 발견? 왜 \x00\x8E?

답변

1

텍스트가 강제로 인코딩으로되어 있기 때문에 메모리에 저장된대로 보았습니다. 그리고 메모리에 (Multi-Byte Character Set) 데이터로 저장됩니다. \x7F 이상의 문자는 leat 2 바이트 표현이됩니다. 그래서 당신은 볼 수 있습니다 :

"\u008E".force_encoding("BINARY") 
# => "\xC2\x8E" 
+0

'MBCS'는 무엇을 의미합니까? 링크 된 태그에는 위키가 없습니다 ... – toro2k

1

이것은 2 진 표현입니다. 내가 문자열 # 결과 \ X {XXXX}을 검사 발견

을 위해 : 살펴 보자에 화에서

, 2010년 7월 27일 22시 21분 31초 0900을, Heesob 공원 썼다 유니 코드 이외의 인코딩

\ x {XXXX}이 (가) 문자열의 이스케이프로 허용 될 가능성이 있습니까?

IRB (주) : 004 : 0> A = \ "xC7 \ XD1 \ xB1 XDB \"이 이진 표현이다

.

IRB (주) : 010 : 0>를 1 => "\ {X} B1DB"

그것은 codepoint 표현에있어

https://bugs.ruby-lang.org/issues/3619

.