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 的格式错误的变音符号的主要内容,如果未能解决你的问题,请参考以下文章
带有 .Get() 对 Azure 搜索 API 的请求的 Angular HttpClient“未知错误”
使用 Javascript Ajax 调用的 Azure 机器学习