Qual è l'accordo con il carattere unicode 首 (U + 9996) e in che modo java / mysql si occupa di esso e dei suoi amici?


Answers

Non conosco i problemi, ma è sicuramente un carattere Unicode valido (e lo è stato da Unicode 1.1).

Question

Ho una stringa java che contiene il carattere Unicode U + 9996 (è quello che ottengo se faccio codePointAt ()).

Se lo guardo nel pannello delle espressioni del debugger (in eclissi), tutto va bene e sembra " ". Tuttavia, se lo stampo sulla console, ottengo semplicemente " ? ". Non sembra essere il font che è il problema dato che ho provato ad impostarlo in modo diverso.

Il mio vero problema è che sto cercando di mettere la stringa in un database MySQL (con codifica utf8). Un sacco di altri caratteri ampi si mostrano bene nel db ma, ancora, questo e altri come questo appaiono come "?". Tutto ciò mi porta a credere che il problema sia dal lato java.

Nell'inseguire questo bug ho imparato un po 'su Normalizzazione Unicode e java.text. Il normalizzatore che sembra potrebbe essere rilevante in questo caso. Ho imparato che U + 9996 è la versione canonica di U + 2FB8. U + 2FB8 ha esattamente gli stessi problemi sopra però per quanto riguarda la visualizzazione e comunque perché dovrei trasformarmi in una rappresentazione non canonica (anche se potessi, quale non credo di poter)?

Ad ogni modo, c'è un potenziale indizio che ho trovato che non sono stato in grado di comprendere. Questa pagina contiene le parole "U + 9996 non è un carattere unicode valido" senza ulteriori spiegazioni. Procede quindi a mostrare come codificare questo carattere unicode apparentemente non valido in varie codifiche Unicode. Quindi la mia domanda è fondamentalmente questa: WTF?

AGGIORNAMENTI

  • Sono su un Mac.
  • Sto parlando della console Eclipse.
    • Ho impostato la codifica della console su UTF-8 in Esegui> Comune
    • Ho aggiunto -Dfile.encoding=UTF-8 agli argomenti JVM (l'impostazione predefinita era MacRoman)
    • La console (Eclipse e Terminal.app) ora mostra i caratteri giusti. Evviva!
  • Sono principalmente interessato ai dati che entrano nel database correttamente, anche se ovviamente mi piacerebbe avere una comprensione totale di ciò che sta succedendo qui.
  • Penso di aver risolto il problema del database. Ho dimenticato di impostare la codifica sulla connessione . Ora non capisco perché alcuni personaggi asiatici siano passati e non altri.
  • Pow, lo si muove velocemente. È difficile stare al passo. Grazie gente.