javascript中的Unicode字符



我希望得到一个包含非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);

相关内容

  • 没有找到相关文章

最新更新