큰 (> 150mb) 고정 폭 데이터 파일의 모음을 분석 중입니다. 필자는 100 줄 덩어리 (각 줄은 7385 자)에서 read.fwf()를 사용하여 천천히 읽었으며 추가 조작을 위해 관계형 데이터베이스로 밀어 넣었습니다. 문제는 텍스트 파일이 때로는 워키 멀티 바이트 문자를 가지고 있다는 것입니다 (예를 들어, "U"대신에 짜증나게 할 정도로 자주), 데이터 파일은 유니 코드 U + F8FF에 시스템이 할당 한 것이 있습니다. 사과 심볼이지만 크로스 플랫폼 표준인지 확실하지 않음). 단어 "카운티"의 후반 했어야텍스트 파일에서 1 바이트 ascii 강제 변환
invalid multibyte string at 'NTY <20> MAINE
000008 [...]
을하지만, 흔들 흔들, 상술 한 바와 같이, U이었다 : 그렇게되면, 나는 오류 다음과 같이 얻을. 누구나 유용하다고 생각하면 더 자세한 코드 & 데이터를 제공하십시오.
저는 R로 코딩을 모두하고 싶습니다. 1 바이트를 강요하는 방법을 모르겠습니다. 따라서 내 질문의 제목 라인 부분 : 거기에 몇 가지 잘못된 멀티 바이트 문자가있는 텍스트 파일에서 단일 바이트 ascii 강제로 쉬운 방법 있는가?
아마도이 문제를 해결할 더 좋은 방법이 있습니다 (시스템 레벨에서 grep을 사용하여 잘못된 멀티 바이트 문자를 사냥해야합니다)?
많은 도움을 주셨습니다.
U + F8FF는 사실 플랫폼을 넘지 않도록 설계되었습니다. 그것은 _Private Use_로 명시 적으로 지정된 범위에 있습니다. – MSalters
예! 텍스트 파일에서 이러한 종류의 문자를 제거하는 (또는 바꾸는) 방법을 알고 있습니까? 바이트 단위 검색을 수행하고 대체해야합니까? – Don
'iconv -c -f UTF-8 -t ASCII'는 멀티 바이트 시퀀스가 실제로 UTF-8이라고 가정하고 트릭을 수행해야합니다. Else'-f ISO-8859-1'가 작동 할 수도 있습니다. – MSalters