2010-10-13 35 views
5

Bằng văn bản tiếng Ả Rập, các ký tự trông khác nhau tùy thuộc vào nơi chúng đứng trong một từ. Ví dụ, chữ cái ta có thể trông như thế này: ـثـ bên trong một từ nhưng trông như thế này: ﺙ nếu nó tự viết tắt. Tôi có một số văn bản tiếng Ả Rập, ví dụ:Làm cách nào để hiển thị một ký tự Unicode độc ​​lập (tiếng Ả Rập) vì nó sẽ trông giống như nó được hiển thị trong một từ?

string word = والتفويض ; 

Khi tôi hiển thị word toàn bộ từ hiển thị chính xác. Bây giờ, tôi muốn phân tích chuỗi và in ra từng chữ cái trong từng từ một. Tuy nhiên, nếu tôi làm điều này:

foreach(char c in word.ToCharArray()) 
{ 
    Debug.Print(c.ToString()); 
} 

Các char c không in ra các đại diện ban đầu của bức thư như nó đã được kết xuất trong bối cảnh của một từ, thay vào đó nó sẽ in ra ký tự tiếng Ả Rập giống như thể nó là kết xuất bởi chính nó. Làm thế nào tôi có thể phân tích chuỗi văn bản tiếng Ả Rập của tôi để các chữ cái được trả về trông giống như khi chúng được hiển thị dưới dạng một từ hoàn toàn?

Tôi đang cố gắng thực hiện điều này trong C#.

Trả lời

4

Có các ký tự trong UCS đại diện cho các dạng ký tự tiếng Ả Rập cụ thể. Tuy nhiên, chúng không hoạt động tốt khi di chuyển từ ngữ cảnh này sang ngữ cảnh khác.

Nói chung nếu bạn muốn chỉ ra rằng một chữ cái được nối với nhau, khi không có chữ cái để tham gia, bạn nên sử dụng U + 200D ZERO WIDTH JOINER ở vị trí thích hợp (trước ký tự để đặt joiner ở bên phải, sau khi nhân vật để đặt nó sang bên trái, hoặc có một trong hai bên.

Ngược lại, đặt U + 200C ZERO hợp với độ rộng giữa các nhân vật sẽ phá vỡ tham gia của họ.

Chỉ cần như thế nào hoạt động tốt trong thực tế sẽ phụ thuộc vào công cụ hiển thị xử lý các ký tự.

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