Azure 机器学习批处理请求返回带有 Unix 的格式错误的变音符号

Posted

技术标签:

【中文标题】Azure 机器学习批处理请求返回带有 Unix 的格式错误的变音符号【英文标题】:Azure Machine Learning Batch request returning mal-formatted umlauts with Unixes 【发布时间】:2017-01-27 20:41:19 【问题描述】:

我已在 Azure 机器学习中部署我的代码,并在 R 中使用不同的操作系统(例如 Unix 和 W10)运行批处理请求。出于某种原因,主机输出仅在 W10 的 R 中正确格式化,但我无法在 Unix 系统中获得正确格式化的输出。在所有系统中获得正确格式输出的唯一方法是通过 Azure GUI 并手动下载文件。在 W10 中,我有幸直接使用我的 Rscript/Rstudio 获取正确格式化的文件。在 R 中,我使用 system("defaults write org.R-project.R force.LANG en_US.UTF-8") 提示 here 来明确指定编码,但这对在 Microsoft 运行的 Azure 服务器中执行的批处理请求 R 脚本没有任何影响。

发生的事情是UTF-8 characters bytes are returned as Latin-1 characters bytes,例如

    öÃ ¶

    ä 作为Ã ¤

    ÄÃ ¥

可以使用此工具 here 对有关 Latin-1 字符进行演示和测试。那么处理这个编码问题的最佳方法是什么,可以在 Azure ML 中以某种方式解决吗?你在哪里可以做错误报告?是否存在将 R 中的 Latin-1 转换为 UTF-8 的工具?

如何在 Azure ML 中通过 R 批处理请求获取格式正确的 UTF-8 文件(不是 Latin-1 字符)?

【问题讨论】:

有Windoze特定的字符集:msdn.microsoft.com/en-us/library/windows/desktop/…。似乎很难将其视为一个错误,除非您可以展示您的一个或多个程序如何未能按照记录的方式运行。用户错误或混淆不是“错误”。您发布的系统调用看起来更像 OSX 系统命令? 【参考方案1】:

批处理请求 R 命令具有saveBlobToFile 函数。问题出在saveBlobToFile 函数中,该函数对getUrl 使用了错误的编码。 getUrl 函数需要明确指定编码。进行以下更改

blobContent = getURL(blobUrl, .encoding="UTF-8")

如果没有.encoding,则输出为ISO8859-1('latin1') 或从您的系统继承的内容。

【讨论】:

以上是关于Azure 机器学习批处理请求返回带有 Unix 的格式错误的变音符号的主要内容,如果未能解决你的问题,请参考以下文章

安排 Azure 机器学习计算实例

在本地运行 Azure 机器学习服务管道

带有 .Get() 对 Azure 搜索 API 的请求的 Angular HttpClient“未知错误”

使用 Javascript Ajax 调用的 Azure 机器学习

云计算与数据科学:Microsoft Azure 机器学习与R 简介

Azure 流式返回数据