[英]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.