2011-07-25 40 views
7

Tôi muốn làm điều gì đó như thế này:Xác định hằng unichar trong mã

const UniChar KA = 'か'; 

Nhưng XCode spits lại "Multi-nhân vật liên tục".

tôi cố gắng tránh sử dụng + characterAtIndex của NSString ... Tôi cần điều này để lặp qua các kana, như bạn có thể duyệt qua bảng chữ cái (char myCharacter = 'A';)

tôi đang tìm kiếm tại Objective c doesn't like my unichars? nhưng nó không thực sự giải quyết nó một cách tốt đẹp cho tôi.

Dù sao, tôi đang cố gắng đặt "lều" và/hoặc "maru" ở trên cùng của か, た, v.v ... như か → が, た → だ. Có thể là giải pháp đã sẵn sàng cho điều đó, trong trường hợp ai đó biết, điều đó cũng sẽ giải quyết được vấn đề của tôi.

+1

"nhưng nó không thực sự giải quyết nó một cách tốt đẹp cho tôi." Tại sao không? Nếu bạn định đề cập đến ký tự by bằng tên KA, thì tại sao việc mã thiết lập hằng số sử dụng ký hiệu か hoặc mã hex là vấn đề quan trọng? Ngoài ra, bạn đang cố gắng để thay thế KA với GA vì lý do nào đó (một số mật mã giá rẻ?), Hoặc đầu vào thực sự có một dakuten hoặc handakuten riêng biệt (tên chính thức cho tenten và maru, tương ứng) kết hợp nhân vật? Trong trường hợp đó, những gì bạn đang thực sự xem là thứ được gọi là "chuẩn hóa Unicode" - hãy thử Google. –

Trả lời

6

Mã nguồn thường được mã hóa dưới dạng UTF-8, có nghĩa là bạn không thể sử dụng các ký tự 16 ký tự ở đó. Bạn cần phải sử dụng dãy thoát:

const UniChar KA = '\u30AB'; 

hoặc chỉ định giá trị bằng số:

const unichar KA = 0x30AB; 

(Lưu ý:. Tôi thực sự không có ý tưởng nếu đó là mã chính xác cho các nhân vật ví dụ bạn đưa ra)

Tôi nghĩ tùy chọn duy nhất khác của bạn là tạo a .strings file, có thể và phải được mã hoá UTF-16, sau đó nhận các ký tự vào chương trình của bạn bằng cách sử dụng NSLocalizedString.

+0

Nó có thể được "giải quyết" bởi điều đó, nhưng cũng giống như bạn lưu ý - nó không phải là dễ đọc trong mã, bạn chỉ không biết liệu chuỗi hex bạn nhập vào thực sự là nhân vật dự định (không thực sự tìm kiếm unicode nhưng nó quá dễ bị lỗi). Tôi đang hướng tới điều bình thường unicode mà Karl gợi ý, nhưng tôi có thể sử dụng thứ gì đó giống như một NSCharacterSet như một công việc xung quanh. – Jonny

+0

Bạn không thể đặt các ký tự 16 bit vào mã nguồn của mình. Đơn giản như thế. Tôi đã thêm một khả năng khác - bằng cách sử dụng bản địa hóa. –

+0

Đã không thực sự có được những gì bạn có nghĩa là bởi một tập tin dây ở đây - dự án hiện tại của tôi không phải là (và sẽ không được) quốc tế. Tôi đã kết thúc bằng cách sử dụng hai NSCharacterSet: s, sau đó thử nghiệm một hiragana chống lại một trong hai. Thêm lều sau đó bằng "ký tự ++" và vòng tròn có "ký tự + = 2". :-P Sau đó, một lần nữa nó là buồn cười mà nó hoàn toàn OK để viết @ "こ れ い い ね" nhưng 'か' là một không-đi. Tôi đoán @ 'か' sẽ là câu trả lời hợp lý, nhưng đừng nghĩ rằng sẽ làm việc ... – Jonny

Các vấn đề liên quan