首页 > 解决方案 > 为什么 Azure appsettings 编码会给我带来错误的字符?

问题描述

我遇到了 azure appsettings 编码的问题。

我有一个 node.js 应用程序部署到应用程序服务中。使用 process.env 调用环境变量时,值的编码错误。我期待一个“utf8”编码支持像“ñ”、“ó”、“í”、“á”、“é”、“ú”这样的字符,但我得到的是像“¢”、“£”这样的字符“, “ “, ETC。

你可以帮帮我吗?

谢谢!

标签: node.jsazureencodingazure-web-app-service

解决方案


我这边的情况完全一样。

process.env在 Kudu( ) 上似乎存在一些编码问题,https://<webappname>.scm.azurewebsites.net/Env.cshtml#envVariables应用程序设置可以按预期显示。同样在 .net 应用程序中,我能够获得正确的字符串。

将输入与我们得到的解码结果进行比较,我发现它可能使用CP437编码并使用另一个字符集(如win1252 )解码。

因此,一种解决方法是对格式不正确的字符串进行编码,然后使用其编码的字符集再次对其进行解码。安装iconv-lite并尝试以下代码片段。

var iconv = require('iconv-lite');

var buf = iconv.encode(process.env.MYTEST, 'win1252');
var result = iconv.decode(buf, 'ibm437');

推荐阅读