钛标签-从服务器解释unicode

钛标签-从服务器解释unicode,unicode,titanium,appcelerator,Unicode,Titanium,Appcelerator,我想在我的应用程序中显示字体图标。如果在标签的文本值中使用unicode编译文件,则一切正常 我的目标是根据API响应更改显示的图标。是否可以从API返回的文本中解释unicode 下面是一个例子: var picto = Ti.UI.createLabel({ // WORKS text:'\uf019', color:'black', font:{ fontFamily:'icons', fontSize:40 } }); T

我想在我的应用程序中显示字体图标。如果在标签的文本值中使用unicode编译文件,则一切正常

我的目标是根据API响应更改显示的图标。是否可以从API返回的文本中解释unicode

下面是一个例子:

var picto = Ti.UI.createLabel({ // WORKS
    text:'\uf019',
    color:'black',
    font:{
        fontFamily:'icons',
        fontSize:40
    }
});

Ti.API.Info(apiResponse.icon); // \uf019 
var picto = Ti.UI.createLabel({ // DON'T WORK
    text:apiResponse.icon,
    color:'black',
    font:{
        fontFamily:'icons',
        fontSize:40
    }
});

非常感谢:)

正如我在评论中所说,您只需要像这样转义unicode文本:

案例1:apiResponse.icon应为=f019

var picto = Ti.UI.createLabel({ // DON'T WORK
    text : "\\u" + apiResponse.icon,    \\ I have escaped 'u' character, so it should work now
    color:'black',
    font:{
        fontFamily:'icons',
        fontSize:40
    }
});
var picto = Ti.UI.createLabel({ // DON'T WORK
    text : String.fromCharCode(apiResponse.icon),    // it will make sure to convert unicode into a character
    color:'black',
    font:{
        fontFamily:'icons',
        fontSize:40
    }
});
如果案例1不起作用,那么您可以尝试以下方法:

案例2:apiResponse.icon=0xf019

var picto = Ti.UI.createLabel({ // DON'T WORK
    text : "\\u" + apiResponse.icon,    \\ I have escaped 'u' character, so it should work now
    color:'black',
    font:{
        fontFamily:'icons',
        fontSize:40
    }
});
var picto = Ti.UI.createLabel({ // DON'T WORK
    text : String.fromCharCode(apiResponse.icon),    // it will make sure to convert unicode into a character
    color:'black',
    font:{
        fontFamily:'icons',
        fontSize:40
    }
});

您需要改变方式,您使用的是unicode而不是SB unicode。 SBUnicode是您使用的4位代码, 有一个问题的例子。在xml和JS中

第一个xml示例:

\ue012

示例2:

    a="\uE105"; \\ code from response ;
var incode=Ti.UI.createLabel({
    text : a,
    top : 300, 

});
检查流动链接上的Unicode和SBunicode,以获得更好的效果。 我认为这很有帮助

请提供一个例子。使用带有图标字体的标签并将文本设置为“\uf19c”不会有问题,它将显示正确的图标(例如FontAwesome中的银行符号)。@miga我已更新了我的消息:)。也许可以尝试替换(“\\”、“\”)之类的。可能是escaped@Cl可能是因为JSON.parse在apiResponse.icon中出错。您可以尝试以下
文本:'\u'+apiResponse.icon
@prashantsani我不能这样做,编译过程中出现错误:解析***/index.js失败[错误]:SyntaxError:字符串[第356行第51列]中的十六进制字符模式无效][错误]:var logo=Ti.UI.createLabel({text:'\u'+apiResp.icon,颜色:'black',top:0,touchEnabled:false,font:{fontFamily:'icons',fontSize:40});它适用于第二种方法!Thanls a lot@Prashant:)@Clément请将此答案标记为已接受,以帮助其他有类似问题的用户找到正确答案。@prashantsani如何显示
\uF0298
?对我来说,4个字符的unicode可以工作,但超过4个字符的unicode不能工作,例如,此代码只打印8个字符(最后一个字符)并忽略前4个字符。我想我以前尝试过,但它不起作用,但可能还有另一个问题。它与上述方法一起工作。但感谢您的回答:)