从C /对象 - 一个UTF8字符串的JavaScript逃逸变音符号

首先,为什么我这样做的简要说明:

我加载从XML字符串中,并利用这些与现有的JavaScript函数进行交互。 我需要躲避他们,只是因为我使用的WebView stringByEvaluatingJavaScriptFromString方法。

我使用这个逃生功能:

- (NSString *) stringByEscapingMetacharacters { const char *UTF8Input = [self UTF8String]; char *UTF8Output = [[NSMutableData dataWithLength:strlen(UTF8Input) * 4 + 1 /* Worst case */] mutableBytes]; char ch, *och = UTF8Output; while ((ch = *UTF8Input++)) if (ch == '\'' || ch == '\'' || ch == '\\' || ch == '"') { *och++ = '\\'; *och++ = ch; } else if (isascii(ch)) och = vis(och, ch, VIS_NL | VIS_TAB | VIS_CSTYLE, *UTF8Input); else och+= sprintf(och, "\\%03hho", ch); return [NSString stringWithUTF8String:UTF8Output]; }

它工作正常,除了变音符号。 例如,“E”显示为“A”

所以,我怎么能逃脱变音符号?

--------------解决方案-------------

您需要实施适当的UTF-8序列擒纵机构。 事情是这样的:

if (ch == '\'' || ch == '\'' || ch == '\\' || ch == '"')
{
*och++ = '\\';
*och++ = ch;
}
else if (((unsigned char)ch & 0xe0) == 0xc0) // 2 byte utf8 sequence
{
*och++ = ch;
*och++ = UTF8Input++;
}
else if (((unsigned char)ch & 0xf0) == 0xe0) // 3 byte utf8 sequence
{
*och++ = ch;
*och++ = UTF8Input++;
*och++ = UTF8Input++;
}
else if (isascii(ch))
och = vis(och, ch, VIS_NL | VIS_TAB | VIS_CSTYLE, *UTF8Input);

分类:目标C 时间:2012-01-01 人气:0
分享到:

相关文章

  • ńǹ否否否否否否否̈ɲƞᶇɳȵ - > n或删除从Unicode字符变音符号 2013-01-06

    我在看一个算法,可以用变音符号(代字号,抑扬,插入符号,变音符号,卡隆)和他们的"简单"的人物角色之间的映射. 例如: ń ǹ ň ñ ṅ ņ ṇ ṋ ṉ ̈ ɲ ƞ ᶇ ɳ ȵ --> n á --> a ä --> a ấ --> a ṏ --> o 等等. 我想这样做在Java中,但我怀疑它应该是Unicode的-Y,应该是可行的合理容易在任何语言. 目的:让轻松地搜索与变音符号的话. 举例来说,如果我有网球选手一个数据库,Björn_Borg进入,

  • 外文字符失去了变音符号 2012-02-08

    我想国际化在我们的调查工具的问题,但是当我插入一些翻译的字符串,SQL服务器似乎剥夺了一些,但不是全部,变音符号... 例:(立陶宛) Ar jūsų darbas reikalauja, kad jūs įgytumėte naujų žinių ir įgūdžių? 变 Ar jusu darbas reikalauja, kad jus igytumete nauju žiniu ir igudžiu? 请注意,'Z'保留了其读音符号,而"U","我"和&q

  • 在Javascript更换变音符号 2012-07-24

    我怎么能代替变音符号(A,S,T等)与他们的"正常"的形式(A,S,T)在JavaScript? --------------解决方案------------- 如果要完全做到这一点在客户端,我认为你唯一的选择就是用某种查找表. 这里有一个出发点,写的是一个叫奥拉维Ivask在他的博客第一章... function replaceDiacritics(s) { var s; var diacritics =[ /[\300-\306]/g, /[\340-\346]/g, // A,

  • 询问意见:重音符号/中主键变音符号 2012-08-13

    我有这样的应用程序使用自然主键. 该数据库使用WE8ISO8859P15字符集. 所以在我的桌子市磨片有一个像"麦德林"和"MÜNCHEN"的主键. 我有一种预感,我们将会有很多麻烦与此有关. 我看到的问题 接口该数据来与另一个字符集的数据库. 我不希望我的主键的字符集转换 数据转储到文件和处理这些文件,我们总是要非常注意的特殊字符和客户端设置 我们应该允许PK的变音符号? 请随时给你的意见. --------------解决方案------------- 和你一样

  • 排序的NSArray igonring变音符号 2012-10-10

    我想一个数组我有这样的变音被视为字符的正常版本号(A == A等)进行排序. 我想localizedCaseInsensitiveCompare:应该做的伎俩. 但事实并非如此. 有人吗? 最佳 -F --------------解决方案------------- localizedCaseInsensitiveCompare:比较了使用在由用户选择的当前语言的标准规则,忽略的情况. 你的情况,你要忽略变音符号,情况并非如此. 这意味着你需要做别的事情. 您需要使用compare:options

  • 实体框架模型和ASP.NET MVC 2预览2:问题与变音符号 2012-10-20

    HI! 我有这一块在视图中的HTML: <% foreach (var item in Model) { %> <tr> <td> <%= Html.ActionLink("Edit", "Edit", new { id = item.HändlerID })%> </td> <td> <%= Html.Encode(item.HändlerID) %> </td> &l

  • 在处理SIP头变音符号 2012-11-21

    继OMA的SIMPLE规范,发送SIP INVITE聊天时,我们可以使用一个名为Subject头. 通常,此首标包含由用户对他的联系人发送所述第一消息. 我的问题是:此消息可以包含变音符号,所以我应该怎么编码呢? 是否有关于如何做到这一点的标准定义? --------------解决方案------------- 作为SIP RFC规定你应该对它们编码为UTF-8. 有些情况下UTF-8是不允许的,美国与ASCII转义规则的任务,但主题头不是其中之一了几个SIP头.

  • Microsoft Excel中轧液变音符号以.csv文件? 2013-01-14

    我以编程方式导出数据(使用PHP 5.2)到.csv测试文件. 示例数据Numéro 1 (note the accented e).的数据是utf-8无预谋BOM) 当我打开MS Excel中该文件是为显示Numéro 1 我可以在文本编辑器(用UltraEdit),它正确地显示它打开此. UE报告字符是decimal 233 我如何可以导出文本数据在.csv文件中,以便MS Excel将正确渲染它,最好不强制使用导入向导,或非默认的向导设置的? --------------解决方案----

  • 甲骨文:搜索变音符号 2013-04-28

    在Oracle我试图找到一个包含一列一些变音符号的所有行. 我用的是这样的:其中,REGEXP_LIKE(名字,"(A | I | S | T | A)','我'); 问题是,它还会返回包含字母行,而不变音符号(A,I,S,T). 例如,上面的条款将返回一个包含"阿德里安"作为名称的行. 我怎么只能搜索变音符号? 谢谢 --------------解决方案------------- 的方式变音符号​​在比较处理,排序时是取决于NLS_SORT值会话的属性. 见语言排序和搜索字

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.129 (s). 10 q(s)