나는 루비를 배우고 있으며 ftp 서버에서 파일 이름을 얻으려고합니다. 내가 얻은 문자열은 gb2312 (simplified Chinese) 로 인코딩되었습니다 . 대부분의 경우 다음 코드로 성공했습니다.
str = str.force_encoding("gb2312")
str = str.encode("utf-8")
그러나 "in encode': "\xFD" followed by "\x88" on GB2312 (Encoding::InvalidByteSequenceError)"
문자열에 "["
또는 기호가 포함되어 있으면 오류가 발생 합니다 "【"
.
Ruby 인코딩은 많은 내부 검사를 허용합니다. 이렇게하면 주어진 문자열을 처리하는 방법을 아주 잘 알 수 있습니다.
"【".encoding
=> #<Encoding:UTF-8>
"【".valid_encoding?
=> true
"【".force_encoding("gb2312").valid_encoding?
=> false
이것은이 캐릭터가 주어진 캐릭터 세트에 있지 않다는 것을 보여줍니다! 이러한 모든 문자를 변환해야하는 경우 encode
메서드를 사용하고 기본값을 제공하거나 다음과 같이 정의되지 않은 문자를 바꿀 수 있습니다.
"【".encode("gb2312", invalid: :replace, undef: :replace)
=> "\x{A1BE}"
문자 인코딩이 혼합 된 문자열이있는 경우 매우 엉망입니다. 많은 추측 없이는 알아낼 방법이 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다