2011-01-06 4 views
7

Ho trovato questo question che mi consente di verificare se una stringa contiene un carattere cinese. Non sono sicuro che gli intervalli di unicode siano corretti, ma sembrano tornare falsi per il giapponese e il coreano e veri per il cinese.Rileva se il carattere è semplificato o il carattere tradizionale cinese

Quello che non fa è dire se il personaggio è cinese tradizionale o semplificato. Come andresti a scoprirlo?


aggiornamento

D: Come posso riconoscere dal valore a 32 bit di un carattere Unicode se questo è un carattere cinese, coreano o giapponese?

http://unicode.org/faq/han_cjk.html

loro discussione che i personaggi indipendentemente dalla loro forma hanno lo stesso significato e pertanto devono essere rappresentati dallo stesso codice. Beh, non è privo di significato per me perché sto analizzando i singoli caratteri che non funziona con la loro soluzione:

Una soluzione migliore è quello di guardare al testo nel suo complesso: se c'è una discreta quantità di kana, è probabilmente giapponese, e se c'è una buona dose di hangul, probabilmente è coreano.

+1

la codepage può aiutare a distinguere? Sembra che il cinese semplificato sia CP 936 e Traditional sia CP 950, almeno nel mondo Microsoft. Forse inizia da http://www.i18nguy.com/unicode/codepages.html per le tabelle codici MS e IBM. – rajah9

+4

Ho fatto una rapida ricerca su google e ho trovato questo http://unicode.org/faq/han_cjk.html ho trovato alcune domande interessanti e hanno discusso anche dei personaggi tradizionali. Spero che sia d'aiuto! – Shaded

+2

Le domande frequenti collegate a Shaded sembrano rispondere esattamente alla tua domanda. Come nell'esempio nelle note di collegamento, come stabiliresti se "chat" è l'inglese o il francese? Se non pensi che la tua risposta sia lì, potresti voler espandere la tua domanda un po '. – Thanatos

risposta

3

Come penso che tu abbia scoperto, non puoi. Semplificati e tradizionali sono solo due stili di scrittura degli stessi personaggi: è come la differenza tra caratteri romani e gotici per le lingue europee.

+0

Sì, credo di si. Funzione su cosa tipo di forma. È un trucco 22. Devi già sapere se il personaggio è S/T per controllarne il valore. Quindi mi limiterò a compilare i dizionari e poi a controllare quelli :) – s84

+0

BTW - c'è effettivamente un modo per controllare i byte, ma il sito unicode ha detto che non è pratico perché c'erano un sacco di eccezioni. Vai a capire! :) – s84

0

È possibile alcuni caratteri. I set di caratteri tradizionali e semplificati si sovrappongono, quindi hai sostanzialmente tre serie di caratteri:

  1. Caratteri che sono solo tradizionali;
  2. Caratteri solo semplificati;
  3. Caratteri che non sono stati modificati e sono disponibili in entrambi.

Prendere il carattere 面 per esempio. Appartiene sia al numero 2 che al numero 3 ... Come carattere semplificato, rappresenta e , volto e tagliatelle. Mentre 麵 è solo un personaggio tradizionale. Quindi, nel database Unihan, 麵 ha uno kSimplifiedVariant, che punta a . Quindi puoi dedurre che è solo un personaggio tradizionale.

Ma anche ha un kTraditionalVariant, che punta a . Ma questo è dove le interruzioni di sistema: se si utilizzano questi dati per dedurre che 面 è solo un carattere semplificato, si sarebbe sbagliato ...

D'altra parte, ha un kTraditionalVariant, indicando , e questi due sono una coppia "reale" semplificata/tradizionale.Ma nulla nel database Unihan differenzia casi come 韓 韩 da casi come 麵面.