file - Dart语言:编码(与HttpRequest和http_server包有关)

标签 file encoding dart latin1 httpserver

我正在创建一个文件,并在其上写入一个字符串,其编码设置为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/

相关文章:

javascript - 使用 Angular js 上传文件 - Protractor 端到端测试

java - 如何在 Java 中关闭文件和/或知道我的代码中某个文件被锁定的位置?

python - 如何在python中对数字进行一次热编码?

dart - 在没有动画的情况下替换 MaterialApp 中的初始路由?

php - PHP 中有没有一种方法可以使文件保持打开状态并处理每一行和后续行?

encoding - Coldfusion 11 的 CFdirectory,文件名中的非 ascii 字符问题

Postgresql - PSQL 编码问题

flutter - onWillPop-无法将Future <bool> Function(BuildContext)分配给参数类型Future <bool> Function()

android - 在 Flutter ListView 中只重建一行?

c - C 中的 FILE 指针不返回 NULL