Javascript decodeURI 出问题

Javascript decodeURI makes problems

我希望在解码方面得到一些帮助。

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

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

的参数中

reboundContent[2][id]从数据库中读取。

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

如果我创建一个新字符串并传入参数,一切正常,但我无法传入该参数。

太疯狂了。

提前感谢您的帮助!

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

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

从你的问题和可能的解决方案来看,似乎包含\u00c4的字符串实际上包含6个字符“\”,"u",“0”,“0”,"c",和“4”。

为了将其转换为它要表示的 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));

简单得多