質問

以下の例と協働しなければならなUnicode文字列では来ない。


CFStringRef aString =  CFSTR("one"); // in real life this is an Unicode string
CFStringRef formatString = CFSTR("This is %s example"); // also tried %S but without success
CFStringRef resultString = CFStringCreateWithFormat(NULL, NULL, formatString, aString);

// Here I should have a valid sentence in resultString but the current result is like aString would contain garbage.
役に立ちましたか?

解決

使用 %@ したい場合など CFStringRefCFStringCreateWithFormat.

書式指示子の文字列プログラミングガイドのための基盤.

  • %@ はObjective-Cオブジェクトまたは CFTypeRef オブジェクト(CFStringRef 対応 CFTypeRef)
  • %s するための、nullで終わる配列の8ビットの符号のない文字(つまり通常のCます。
  • %S するための、nullで終わる配列の16ビットUnicode文字です。

A CFStringRefオブジェクトと同じではない"、nullで終わる配列の16ビットUnicode文字の".

他のヒント

としてのコメントのその他の回答は、お勧めのポスターを

  • を、UTF8文字列携帯へ char*
  • に、変換す CFString を使用 CFStringCreateWithCStringkCFStringEncodingUTF8 としてのエンコーディングです。

ください使用しないでください %sCFStringCreateWithFormat.くださいだけに頼ることはありません、"システムのエンコーディング"は、MacRoman西欧の環境、その他の言語を学んでいます。のコンセプトのシステムのエンコーディングは本質的に脳死は、特に東アジアの環境をつくったものの内側の文字のASCIIコードの範囲(以下127!) を変更します。地獄の改ゆったりだな"システムのエンコーディング".幸い、10.4、すべての方法を使用する"システムのエンコーディング"は現在非推奨 を除く %s... .

すみません書いているこのほどこの小さな話題になったのは残念で数年前にいる時に、多くの素敵なるアプリケーションの動作しなかった日本語/韓国語Macがこの"システムのエンコーディングです。" を参照ください この詳細な説明 に書いた数年前であれば、興味がありました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top