どのような文字列はCFStringCreateWithFormat期待を引数として?
質問
以下の例と協働しなければならな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.
解決
使用 %@
したい場合など CFStringRef
通 CFStringCreateWithFormat
.
%@
はObjective-CオブジェクトまたはCFTypeRef
オブジェクト(CFStringRef
対応CFTypeRef
)%s
するための、nullで終わる配列の8ビットの符号のない文字(つまり通常のCます。%S
するための、nullで終わる配列の16ビットUnicode文字です。
A CFStringRefオブジェクトと同じではない"、nullで終わる配列の16ビットUnicode文字の".
他のヒント
としてのコメントのその他の回答は、お勧めのポスターを
- を、UTF8文字列携帯へ
char*
- に、変換す
CFString
を使用CFStringCreateWithCString
とkCFStringEncodingUTF8
としてのエンコーディングです。
ください使用しないでください %s
に CFStringCreateWithFormat
.くださいだけに頼ることはありません、"システムのエンコーディング"は、MacRoman西欧の環境、その他の言語を学んでいます。のコンセプトのシステムのエンコーディングは本質的に脳死は、特に東アジアの環境をつくったものの内側の文字のASCIIコードの範囲(以下127!) を変更します。地獄の改ゆったりだな"システムのエンコーディング".幸い、10.4、すべての方法を使用する"システムのエンコーディング"は現在非推奨 を除く %s
... .
すみません書いているこのほどこの小さな話題になったのは残念で数年前にいる時に、多くの素敵なるアプリケーションの動作しなかった日本語/韓国語Macがこの"システムのエンコーディングです。" を参照ください この詳細な説明 に書いた数年前であれば、興味がありました。
所属していません StackOverflow