2011-07-25 7 views
7

でのunichar定数を定義し、私はこのような何かをしたいと思います。 コード

は、私はあなたが私が Objective c doesn't like my unichars?を見ていたアルファベット( char myCharacter = 'A';

を反復処理することができますように、かなを反復処理するために、これを必要とする...のNSStringの+ characterAtIndexを使用して回避しようが、それは本当にありません私のために良い方法でそれを解決してください。

とにかく、かんたんのかた、たただの上に "tenten"や "maru"を置いています。誰もが知っている場合に備えて、私の問題を解決するための準備ができた解決策かもしれません。

+1

"しかし、それは本当に私にとって素晴らしい方法で解決しません。"何故なの?とにかくKAという名前でか文字を参照しようとするなら、定数を設定するコードがかシンボルか16進コードを使用するかどうかは重要ですか?また、何らかの理由でKAをGAに置き換えようとしているのですか(あるいは安価な暗号ですか?)、実際には、文字と文字を組み合わせた入力が実際に別のものか、その場合、あなたが実際に見ていることは、「Unicode正規化」と呼ばれるこのことです.Googleを試してみてください。 –

答えて

6

ソースコードは通常、UTF-8としてエンコードされます。つまり、そこに16ビットの文字リテラルを使用することはできません。

const UniChar KA = '\u30AB'; 

または数値的に値を指定します:

const unichar KA = 0x30AB; 

(注:それはあなたが与えた例の文字の正しいコードだ場合、私は本当に分からない)

あなたは、エスケープシーケンスを使用する必要があります

a .strings fileを作成し、UTF-16でエンコードすることができます。NSLocalizedStringを使用してプログラムに文字を取得することをお勧めします。

+0

それは "解決"することができますが、あなたがメモしているように - それはコードでは見分けがつかないだけです。あなたが入力した16進文字列が本当に目的の文字であるかどうかは分かりません。エラーを起こしやすい)。私はカールが提案したユニコードの正規化に傾いていますが、NSCharacterSetのようなものを回避するために使うことができます。 – Jonny

+0

ソースコードに16ビット文字を入力することはできません。そのような単純な。ローカライゼーションを使用して別の可能性を追加しました。 –

+0

ここでは文字列ファイルの意味を理解できませんでした。私の現在のプロジェクトは国際化されていません。私は2つのNSCharacterSetを使用して終了し、次にそれらのいずれかに対してひらがなをテストしました。 "文字++"と "文字+ = 2"の円でテンテンを追加する。 :-Pそれからもう一度、「これいいね」と書いても大丈夫だけど、「か」は無駄だ。私は@ 'か'が論理的な答えになると思うが、それはうまくいくとは思わない。 – Jonny