2016-04-03 16 views
5

Quando unicode sa quando leggere da destra a sinistra o da sinistra a destra.Gestione di caratteri arabi in unicode

Sia in word che in python.

Per esempio,

هذا هو الملعون جيد رجل الصباح! 

Se si dovesse colpire backspace, sarebbe letto da destra a sinistra.

ho stampato la rappresentazione byte Unicode che è

u'\u0647\u0630\u0627 \u0647\u0648 \u0627\u0644\u0645\u0644\u0639\u0648\u0646 \u062c\u064a\u062f \u0631\u062c\u0644 \u0627\u0644\u0635\u0628\u0627\u062d!' 

Ma non ho visto nulla significanti sinistra a destra o da destra a sinistra.

Per le stringhe normali come,

Hi how are you, it works from left to right. 

non dovrebbe esserci un carattere Unicode o byte per significare da sinistra a destra o qualcosa del genere?

risposta

1

C'è, ecco un modo comico per spiegarlo. https://www.explainxkcd.com/wiki/index.php/1137:_RTL

In Unicode, il carattere RLM codificata a U + 200F destra a sinistra MARK (HTML ‏ · ‏). In UTF-8 è E2 80 8F. L'utilizzo è prescritto nell'algoritmo bidirezionale Unicode. LRM è codificato U + 200E LEFT-TO-RIGHT MARK

https://en.wikipedia.org/wiki/Right-to-left_mark

L'algoritmo bidirezionale è descritto qui. http://unicode.org/reports/tr9/

particolare ALM U + 061C arabo: lettera MARK destra a sinistra larghezza zero caratteri arabo

+3

Nota che la maggior parte delle volte tu * non dovresti * usare controlli di direzione espliciti. – o11c

2

La direzione di scrittura è una proprietà di ciascun carattere Unicode. Unicode contiene un insieme complesso di proprietà per ogni punto di codice (sia esso per esempio un numero, un simbolo matematico, se è alfabetico, il suo caso, la direzionalità, quale blocco di codice è dentro - che definisce indirettamente lo script - ecc.).

Per esempio, vedere http://www.fileformat.info/info/unicode/char/0647/index.htm (questo è il primo carattere nel tuo esempio), che comprende la proprietà [AL] bidi (bidirezionalità) - questa codifica "da destra a sinistra araba", come la direzione di scrittura per questo glifo.

Ci sono caratteri Unicode che impostano esplicitamente la direzione del testo, ma questi non dovrebbero normalmente essere richiesti o utili. Il renderizzatore di caratteri dovrebbe già sapere, per ogni carattere che rende, dalle sue proprietà Unicode, quale direzione richiede (sebbene il testo convertito da altre codifiche legacy possa ancora contenere espliciti codici indicatori di direzione).

Problemi correlati