我正在创建一个文件,并在其上写入一个字符串,其编码设置为LATIN1。但是,完成的文件设置了不同的编码(在Linux上,“file -bi”返回的us-ascii或utf-8,取决于我用来获取String的方法)。

以下是创建方法:

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引起了问题)。

最佳答案

问题所描述的方法没有问题。实际上,问题出在未正确设置的http请求正文处理程序中。

因此,我在回答自己的问题,以帮助其他遇到相同问题的人。

以下是我的请求处理程序(来自http_server包):

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

看看注释掉的“defaultEncoding”。这就是原因。如果您不处理请求中的任何文件( Blob ),我认为您无法设置它。我不知道在处理某些String时是否应该设置它(,如果有人可以使用此信息完成此答案,我将不胜感激)。

关于file - Dart语言:编码(与HttpRequest和http_server包有关),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27133682/

10-11 22:16
查看更多