Javascript decodeURI会产生问题

时间:2016-09-10 19:21:18

标签: javascript decode

我希望能为解码提供一些帮助。

给定参数:\ u00c4(真实密钥Ä)

密钥包含在一个名为:reboundContent [2] [id](\ u00c4)

的参数中 从数据库中读取

reboundContent [2] [id]。

接下来我尝试了以下:decodeURI(reboundContent [2] [id]),但这不起作用。

如果我创建一个新字符串并传入参数,一切都很完美,但我不能给出该参数。

那太疯狂了。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

根据您的问题和可能的解决方案,似乎包含\ u00c4的字符串实际上包含6个字符“\”,“u”,“0”,“0”,“c”和“4”。< / p>

为了将其转换为unicode字符,它意味着表示,一种简单的方法是将其包装在引号中并使用JSON.parse:

var parsedString = JSON.parse('"' + originalString + '"');

//Set string to "\u00c4", literally.
//Note that the backslash is escaped
//with a preceding backslash
var string = "\\u00c4";

//check string
console.log(string); // \u00c4

//check string length
console.log(string.length); // has 6 characters

//check first two characters
console.log(string.slice(0,2)); //are "\" and "u"

//convert to actual character
string = JSON.parse('"' + string + '"');

//string is now "Ä"
console.log(string);

//works for longer strings also:
console.log(JSON.parse('"\\u00c4 and \\u00d8"')); // Ä and Ø

使用这种方法应该比将字符串拆分为组件,搜索“\ u”,删除“0”和使用String.fromCharCode(parseInt('c4', 16));

简单得多

答案 1 :(得分:0)

我找到了解决方案。它或多或少是好的,肯定不是完美的,但它是解决这个问题的一种方法。

我只是把字符串拆分成它的组件。所以。我正在寻找我要检查的字符串中的组合\ u。如果发现这一点,我将删除前面的全部0以获得正确的代码字。在这种情况下c4。这可以通过调用该方法来转换。 String.fromCharCode(parseInt('c4',16)); 原始字符串是在methodstart中复制的,我正在用方法中的Ä替换\ u00c4。这可以通过字符串中的每个元素来完成。