[英]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?
我在google
和StackOverFLow
中尝试过,没有一个重复项或答案对我不起作用,就像这样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.