【问题标题】:NSString containing aphostrophe (') is not set properly to SOAP service包含撇号 (') 的 NSString 未正确设置为 SOAP 服务
【发布时间】:2019-11-07 09:29:17
【问题描述】:

我的观点很奇怪。我有UITextField,其中包含用户名。当它包含撇号 (') 时,服务无法正确读取用户名。我想它与Unicode有关。我试着看看代码是什么,我得到了:

L'TEST - contains code 8217
' - is 39
` - is 96

谁能向我解释为什么会发生这种情况,以便我解决这个问题

【问题讨论】:

    标签: objective-c unicode nsstring


    【解决方案1】:

    L'TEST - 包含代码 8217

    那将是 L’TESTU+2019 ‹’› \N{RIGHT SINGLE QUOTATION MARK}。如果您仔细观察,在大多数字体中,这个字符会略微卷曲。这不是撇号,而是误用

    谁能解释一下为什么会这样

    常见原因:

    • "The Fool" 一些恶作剧的输入系统默默地用撇号代替引号。文字处理器和移动操作系统屏幕键盘可以做到这一点。这是善意的,但有时会产生错误的结果。
    • “The Clueless”用户不知道如何正确键入撇号并选择了看起来相似的引号。
    • "The Angry" 您的 UI 文本字段(或来自用户的链中的其他内容)出于某种迟钝的原因禁止输入撇号。用户绝对拒绝编写拼写错误的内容,并手动将撇号替换为引号以解决缺陷软件。

    所以我可以解决这个问题

    这是一个社会问题,而不是软件问题。

    【讨论】:

    • 10 倍,@daxim。一句话回答很好 - 就我而言,这是一个软件问题,因为用户名来自外部系统(WEB),他们可以添加简单的',所以我需要进行替换。顺便说一句,在 iOS 键盘上符号是 right single quoted mark,但在 Android 上是 ' 和 `。
    【解决方案2】:

    由于 SOAP 服务基于 XML 并且单引号是 XML 中的一个定界符,因此您需要通过在所有文本字段中将“'”替换为“\'”来转义单引号。这是一个很常见的问题。

    【讨论】:

    • 我的问题,@Michael Dougan 是当我发送数据时服务收到错误的撇号。从我现在的研究来看,我认为问题出在objective-c代码中。我什至无法替换NSString 中的那个符号。例如,当我决定用zzz 替换' 时,我得到了L'TEST,但是当我尝试用zzz 替换L 时,我得到了zzz'TEST
    • 我有时不得不直接从字符串中复制一个字符并将其粘贴到我的替换语句中以获取要替换的正确字符,即使它们看起来相同。
    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 2011-03-20
    • 2023-03-08
    相关资源
    最近更新 更多