在Appcelerator中如何将无斜杠Unicode转为货币符号?
解决Appcelerator中动态Unicode字符显示问题
我完全懂你遇到的困扰——直接写'\u20b9'时,JavaScript解析器会在编译阶段就把这个转义序列转换成对应的卢比符号(₹),但通过拼接得到的'\u20b9'其实只是一串普通文本,里面的\和u都是字面量字符,自然不会被解析成Unicode符号。
这里有个简单可靠的解决方法,利用标准JavaScript的String.fromCharCode()方法来动态生成对应的Unicode字符:
具体实现步骤:
- 从API获取到的字符串是
"u20b9",先提取出后面的十六进制编码部分(去掉开头的u) - 将十六进制字符串转换成十进制的字符编码值
- 用
String.fromCharCode()生成对应的目标字符
示例代码:
// 假设从API获取的Unicode标识是"u20b9" var apiUnicode = "u20b9"; // 提取十六进制编码部分 var hexPart = apiUnicode.slice(1); // 将十六进制转为十进制字符码 var charCode = parseInt(hexPart, 16); // 生成对应的Unicode字符 var rupeeSymbol = String.fromCharCode(charCode); alert(rupeeSymbol); // 此时会正确显示₹
如果你的API返回的是不带u的纯十六进制字符串(比如"20b9"),那可以省略提取步骤,直接转换即可:
var apiHex = "20b9"; var rupeeSymbol = String.fromCharCode(parseInt(apiHex, 16)); alert(rupeeSymbol);
这个方法在Appcelerator的Android和iOS环境下都能正常工作,因为String.fromCharCode()是标准JavaScript方法,跨平台兼容性拉满。
内容的提问来源于stack exchange,提问作者Vishal Rabadiya
相关产品推荐
相关产品推荐

