我希望得到一个包含非ascii字符的字符串,例如。字符串Øvo
,但是我得到的字符串包含了该字符的不同表示:Ãu0098vo
。如何将其转换为我想要的字符串?
我知道这个字符串表示是如何获得的,但我不能撤消编码:
let modelString = JSON.stringify(model);
return window.btoa(unescape(encodeURIComponent(modelString)));
我已经尝试了很多功能(从Firefox控制台),但我没有得到预期的结果:
- window.atob(逃避(decodeURIComponent(" u0098vo")))→未捕获的DOMException:字符串包含无效字符
- 逃脱(decodeURIComponent(" u0098vo")→"% C3 % 98 vo"
- JSON.parse("[" u0098vo"]")[0]→" u0098vo"
- JSON.parse("[" u0098vo"]")[0]→" u0098vo"
- unescape(" u0098vo")→" u0098vo"
- unescape(" u0098vo")→" u0098vo"
- String.fromCharCode(方法(' 98 ',64))→" u0000">
- String.fromCharCode(方法("98")→"b">
避免使用unescape
,因为它"从Web标准中删除"!
var model = {"key": "Øvo"};
var modelString = JSON.stringify(model);
var uriEncoded = encodeURIComponent(modelString);
console.log(uriEncoded);
// wrong
console.log(unescape(uriEncoded));
// right
console.log(decodeURIComponent(uriEncoded));
// btoa convertion
var b2a = btoa(decodeURIComponent(uriEncoded));
console.log(b2a);
// the reverse conversion
var a2b = atob(b2a);
console.log(a2b);