繁体   English   中英

如何将 NSString 转换为 UTF-8 以外的编码?

[英]How do I convert NSString to an encoding other than UTF-8?

我正在c项目中使用 c 我正在尝试将我的字符串转换为 c 中的受人尊敬的类型,下面的代码应该发送到核心库

typedef uint16_t    UniCharT;
static const UniCharT s_learnWord[] = {'H', 'e','l','\0'};

到目前为止我所做的是string是我正在传递的

NSString * string = @"Hel";
static const UniCharT *a = (UniCharT *)[string UTF8String];

但是当超过一个字符时它无法转换,如果我通过一个字符然后工作正常请让我错过我的地方,我怎样才能像s_learnWord?

我在googleStackOverFLow中尝试过,没有一个重复项或答案对我不起作用,就像这样Convert NSString into char array我已经在做同样的事情了。

你的问题有点模棱两可,因为标题是“c type char[]”,但你的代码使用typedef uint16_t UniCharT; 这是矛盾的。

对于 UTF-8 以外的任何字符串转换,您通常需要使用getCString:maxLength:encoding:方法。

当您使用uint16_t时,您可能正在尝试使用 UTF-16? 在这种情况下,您需要将NSUTF16StringEncoding作为编码常量传递。 (或者可能是NSUTF16BigEndianStringEncoding / NSUTF16LittleEndianStringEncoding

像这样的东西应该工作:

include <stdlib.h>

// ...

NSString * string = @"part";
NSUInteger stringBytes = [string maximumLengthOfBytesUsingEncoding];
stringBytes += sizeof(UniCharT); // make space for \0 termination
UniCharT* convertedString = calloc(1, stringBytes);
[string getCString:(char*)convertedString
         maxLength:stringBytes
          encoding:NSUTF16StringEncoding];

// now use convertedString, pass it to library etc.

free(convertedString);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM