【问题标题】:How to convert an NSString which is NSUTF8Encoded to NSASCIIEncoding in objective-c iPhone?如何在objective-c iPhone中将NSUTF8Encoded的NSString转换为NSASCIIEncoding?
【发布时间】:2011-09-21 17:38:52
【问题描述】:

我有一个 NSString,其中包含用 NSUTF8Encoding 编码的数据。我想将该字符串转换为 NSASCIIEncoding。无论如何,请告诉我以适当的方式转换它。我能够反向转换(NSASCIIEncoding 到 NSUTF8Encoding)。

请提供任何示例代码。

提前致谢

【问题讨论】:

    标签: iphone objective-c encoding


    【解决方案1】:

    我有一个 NSString,其中包含用 NSUTF8Encoding 编码的数据。

    真的吗? 因为 NSString 在内部始终将其内容视为 UTF-16。 因为您无法确定 NSString 在内部如何存储其数据。从概念上讲,NSString 适用于 UTF-16。

    我想将该字符串转换为 NSASCIIStringEncoding。

    if ([myString canBeConvertedToEncoding:NSASCIIStringEncoding]) {
        const char *asciiString = [myString cStringUsingEncoding:NSASCIIStringEncoding];
    }
    

    【讨论】:

    • +1 测试很重要,因为您不能保证 NSString 可以转换为 ASCII。
    • 我的印象是NSString 的内部表示会根据类集群想要优化它的方式而有所不同。 Apple 哪里说它永远是 UTF-16?
    • Lucas:见developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…:“NSString 对象在概念上是具有平台字节序的 UTF-16。这并不一定意味着它们的内部存储机制;这意味着 NSString 长度、字符索引,并且范围以 UTF-16 单位表示,并且 NSString 方法名称中的术语“字符”是指 16 位平台端 UTF-16 单位。” ——所以你至少部分正确。它在概念上是 UTF-16,但没有定义实际的存储。
    • 好的,我已经做到了。但我无法使用那个 asciiString。当我使用那个 asciiString 时,出现了 Exc-Bad-Access 异常。怎么办?
    猜你喜欢
    • 2011-01-24
    • 2018-04-27
    • 2018-04-06
    • 2011-09-19
    • 1970-01-01
    • 2014-10-25
    • 2011-09-18
    • 2020-10-26
    • 2016-12-17
    相关资源
    最近更新 更多