Javascript:以 unicode-escape 格式从 url 读取

问题描述

我正在使用 node-fetch 从 URL 读取数据。返回结果是完美的,只是它与我的首选结果不同。 对于某些特殊字符,如 í 或此 ř,我希望它采用以下格式:u00edu0159。 是否可以在不查找字符并手动替换它的情况下实现类似的功能

这是我的代码

const fetch = require("node-fetch");
var result = {}
fetch(url)
.then(res => res.json())
.then(json => result = json);

我的json结果:

{"title":"Adopce zvířat"}

我想要的不是上面的结果:

{"title":"Adopce zv\\u00ed\\u0159at"}

这一定很奇怪,但出于某种原因,我想要那样。

解决方法

来自 GitHub Gist User josephrocca 的这个函数找到 here on GitHub Gist 将所有 non-ASCII 字符替换为那里的 unicode 转义字符串。

function escapeUnicode(str) {
  return [...str].map(c => /^[\x00-\x7F]$/.test(c) ? c : c.split("").map(a => "\\u" + a.charCodeAt().toString(16).padStart(4,"0")).join("")).join("");
}

该函数在分割后匹配所有非 ASCII 字符 字符串以“unicode-safe”方式(使用`[...str]`)。然后拆分每个 unicode 字符到它的代码点,并得到转义码 对于每个,然后加入所有的 ASCII 字符和 Unicode 转义为一个字符串。

[...]

基于此线程中的讨论:https://gist.github.com/mathiasbynens/1243213

,

您可以使用 jsesc 包:

const jsesc = require('jsesc');

jsesc('Ich ♥ Bücher'); // → 'Ich \\u2665 B\\xFCcher'

jsesc('foo ? bar'); // → 'foo \\uD834\\uDF06 bar' 

来自 Github 上的 Documentation

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...