Iconv
에 문자열을 읽을 수있는 출력으로 변환하는 방법을 모르겠습니다.UTF8을 cp1252로 올바르게 변환하는 방법 (1.8.7)
예 : "라틴 대문자 S CARON"을 U+0160으로 변환하고 Š
으로 렌더링했습니다.
Iconv.conv('cp1252', 'UTF8', 'Š'
)는 그러나 "\212"
내가 그것을 또한 Š
로 렌더링에 해당 CP1252 문자, 0x8A
을 반환 기대 반환합니다. 그러나 인쇄 된 결과는 여전히 "\212"
입니다. 8 진수 표현입니다 (\212
은 0x8A
또는 138
의 경우 8 진수입니다).
같은 출력을 사용하여 cp1252//IGNORE//TRANSLIT
과 같은 좀 더 특이한 인코딩 명령도 시도해 보았습니다.
내가 뭘 잘못하고 어떻게해야합니까?
는 감사편집
캐스퍼는, 콘솔 출력이 올바르게 문자를 렌더링해야한다고 말했습니다하지만하지 않습니다. 아마 나는 cp1252를 받아들이도록 그것을 설정하는 방법을 모른다.
사람이 그것을 어떻게 말해 줄 수 있다면 감사하겠습니다- 나는 우분투 13.04 및 locale
의 IRB 및 "\212"
로 RubyMine에 내장 된 콘솔 디스플레이 출력 출력과 일반 bash는 모두 있어요 모든 값에 대해 en_US.UTF8
입니다.
Iconv.conv('cp1252', 'UTF8', 'Š').inspect
인쇄 "\"\\212\""
Iconv.conv('cp1252', 'UTF8', 'Š').each_byte { |b| p b }
인쇄 138
및 "\212"
나에게 맞는 소리. 'puts "\ 212"'는 터미널이 cp1252로 설정되었을 때 필요한 것을 출력해야합니까? – Casper
Casper가 맞습니다. Ruby에서 올바르게 표시하는 방법을 알고있는 장치로 문자열을 가져와야합니다. Ruby는 글리프를 렌더링하지 않으며 의심스러운 경우'irb' 또는'inspect'는 이스케이프 된 8 진수를 출력하므로 적어도 문자열에있는 내용을 명확하게 볼 수 있습니다. –
@Casper 그것이 내가 예상했던 것입니다. 그러나 나는 문자 적으로 "\ 212"을 얻고 있습니다. 그래서 나는 묻습니다. 편집을 참조하십시오. – kostja