2014-11-25 10 views
1

파일을 생성하고 인코딩을 LATIN1로 설정하여 문자열을 작성합니다. 그러나 완성 된 파일은 다른 인코딩 (Linux에서 "file -bi"에 의해 반환 된 us-ascii 또는 utf-8, String을 가져 오는 데 사용하는 메서드에 따라 다름)로 설정됩니다. 잘못 될 수 있는지에다트 언어 : 인코딩 (HttpRequest 및 http_server 패키지와 관련된)

new File("/home/username/dart_test/file.xml").create(recursive: true).then((file) { 
    file.writeAsString(_methodReturnsAString(), mode: FileMode.WRITE, encoding: LATIN1); 
}); 

어떤 아이디어 : 여기

는 생성 방법을 다음? (대답하기 위해 관련)

편집 :

상술 한 방법에 아무런 문제가 없습니다. 문제는 "writeAsString"내부의 메소드에 제공되는 데이터입니다. 이 데이터는 제대로 처리되지 않는 HttpRequest에서 가져온 것입니다 (사실 ISO-8859-1 인코딩 설정으로 문제가 발생했습니다).

+0

'LATIN1'의 값은 무엇입니까? –

+0

@ GünterZöchbauer, "LATIN1"은 ISO-8859-1 인코딩을 의미합니다. Encoding.getByName ("ISO-8859-1")을 시도했지만 작동하지 않습니다. – Felipe

+1

찾았습니다. 'LATIN1'은'import '다트에서 왔습니다 : convert';' –

답변

0

질문에 설명 된 방법에는 아무런 문제가 없습니다. 사실, 문제는 올바르게 설정되지 않은 http 요청 본문 처리기에 놓이게됩니다.

그래서 나는 같은 문제를 가진 다른 사람들을 돕기 위해 내 자신의 질문에 대답하고 있습니다.

여기 (http_server에서 패키지) 내 요청 처리기 다음과

HttpBodyHandler.processRequest(request/*, defaultEncoding: Encoding.getByName("ISO-8859-1")*/).then((body) { 
     // Do something with body. 
    }, onError: _printError); 

가에서 봐를 "defaultEncoding"주석. 그것이 원인이었습니다. 요청에 대해 파일 (blob)을 처리하지 않는 경우 사용자가 설정할 수 있다고 생각하지 않습니다. 나는 누군가가이 정보를 가지고이 대답을 완성 할 수 있다면 감사 할 것입니다. ( )) 어떤 문자열을 처리 할 때 설정해야하는 상황이 있는지 모르겠습니다.