在javascript

时间:2018-05-29 12:44:04

标签: javascript unicode titanium appcelerator currency

我正在使用appcelerator中的货币符号来在Android和iOS中构建应用。我想让很多参数动态化,所以将这个值(u20b9)作为api传递给app。由于某些原因,不能像这样传递值(\ u20b9),所以不带斜线传递。

当我使用下面的代码时,它正常工作: -

var unicode = '\u20b9';
alert(unicode);

输出: - ₹

当我使用以下代码时: -

var unicode = '\\'+'u20b9';
alert(unicode);

输出: - \ u20b9

正因为如此,而不是₹它打印\ u20b9无处不在,我不想要。

提前致谢。

2 个答案:

答案 0 :(得分:3)

以下适用于我:

console.log(String.fromCharCode(0x20aa)); // ₪ - Israeli Shekel
console.log(String.fromCharCode(0x24)); // $ - US Dollar
console.log(String.fromCharCode(0x20b9)); // ₹ - ???

alert(String.fromCharCode(0x20aa) + "\n" + String.fromCharCode(0x24) + "\n" + String.fromCharCode(0x20b9));

答案 1 :(得分:1)

据我所知,你需要通过api传递unicode字符的字符串值。显然,你不能使用没有斜杠的字符串代码,因为这会使它成为无效的unicode,如果你传递斜杠,那么将值转换为unicode。所以你在这里可以做的是传递没有斜线的字符串& ' U'字符,然后将剩余的字符解析为十六进制格式。

请参阅以下代码段:

// this won't work as you have included 'u' which is not a hexadecimal character
var unicode = 'u20b9';
String.fromCharCode(parseInt(unicode, 16));


// It WORKS! as the string now has only hexadecimal characters
var unicode = '20b9';
String.fromCharCode( parseInt(unicode, 16) ); // prints rupee character by using 16 as parsing format which is hexadecimal

我希望它能解决您的问题!