簡體   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