node.js - 为什么 Azure appsettings 编码会给我带来错误的字符?
问题描述
我遇到了 azure appsettings 编码的问题。
我有一个 node.js 应用程序部署到应用程序服务中。使用 process.env 调用环境变量时,值的编码错误。我期待一个“utf8”编码支持像“ñ”、“ó”、“í”、“á”、“é”、“ú”这样的字符,但我得到的是像“¢”、“£”这样的字符“, “ “, ETC。
你可以帮帮我吗?
谢谢!
解决方案
我这边的情况完全一样。
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');
推荐阅读
- python - Python:检查列表元素是否是另一个列表元素的字符串的一部分并将其弹出
- azure-pipelines - 放置文件夹中的 Web 项目构建任务工件有很多额外的文件夹吗?
- java - 来自 ClientBuilder/WebTarget 程序的带有 DateTimeParseException/JsonbException 的 JSON 解析日期
- android - React native Task :app:processDebugResources FAILED 在此构建中使用了弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容
- php - 当相同的请求在 Postman 中工作时,为什么我对这个 API 的 PHP cURL 请求没有提取任何数据?
- r - 通过汇总其列来转换数据框
- python - 在 cx_oracle 上使用多个主机
- ios - 弹出窗口中的 Segue 关闭完成崩溃
- c++ - 为什么在 std::move 中使用 std::remove_reference?
- laravel - Vue 路由器未在 Laravel 应用程序中加载页面