Windows 컴퓨터에 다소 큰 JSON 파일이 있으며 \xE9
과 같은 내용이 포함되어 있습니다. 내가 JSON.parse
일 때 잘 동작합니다. 나는에 CentOS를 실행 내 서버에 코드를 누르면JSON.parse를 사용하여 예기치 않은 인코딩 오류가 발생했습니다.
하지만, 난 항상이 얻을 :
λ file data.json
data.json: UTF-8 Unicode English text, with very long lines, with no line terminators
CentOS는 : 여기
"\xE9" on US-ASCII (Encoding::InvalidByteSequenceError)
는
윈도우 두 시스템에 file
의 출력 :
$ file data.json
data.json: UTF-8 Unicode English text, with very long lines, with no line terminators
여기에서 i 내가 구문 분석하려고 할 때 오류가 발생했습니다.
$ ruby -rjson -e 'JSON.parse(File.read("data.json"))'
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/json/common.rb:155:in `encode': "\xC3" on US-ASCII (Encoding::InvalidByteSequenceError)
이 문제의 원인은 무엇입니까? 가능한 모든 가능한 인코딩으로 파일을 변경하려면 iconv 사용하여 시도했지만 아무 것도 작동하는 것.
문제는 내가 소유 한 파일입니다. 이 문제를 직접 해결하기 위해 파일의 인코딩을 사용하는 것이 가능합니까 아니면 Ruby에서해야합니까? 답변을 읽은 후에 파일을 ISO-8859-1로 변환하려고했지만 여전히 인식하지 못합니다. – itdoesntwork
파일은 이미 ISO-8859-1입니다. 당신은 그것을 Ruby로 읽어 들여 인코딩을 UTF-8 (첫 번째'File.read' 예제 에서처럼)로 변환 한 다음 다시 출력 할 수 있습니다. 그러면 UTF-8로 인코딩 된 파일이 남습니다. –