Può il francese e lo spagnolo i caratteri speciali si terrà in un varchar?

Francese e spagnolo sono caratteri speciali che non sono utilizzati nella normale inglese (vocali accentate e simili).

Sono i caratteri supportati in un varchar? O ho bisogno di un nvarchar per loro?

(NOTA: io non NON desidera una discussione su se sia di tipo nvarchar o varchar.)

InformationsquelleAutor Vaccano | 2011-08-24



5 Replies
  1. 12

    Cosa Implementazione di SQL(s) stai parlando?

    Posso parlare di Microsoft Sql Server SQL implementazioni, non così tanto.

    Per Microsoft SQL Server, le regole di confronto predefinite è SQL_Latin1_General_CP1_CI_AS (latina, 1 Generale, in caso di conservazione, case-insensitive, accentati). Permette di andata e ritorno rappresentazione di più lingue dell’europa occidentale a byte singolo modulo (varchar) piuttosto che in doppio byte (nvarchar).

    È costruito su “Windows 1252” codice pagina. Che il codice della pagina in modo efficace è ISO-8859-1 con il codice del punto gamma 0x80–0x9F essere rappresentato da un insieme alternativo di glifi, tra cui il simbolo dell’Euro a 0x80. ISO-8859-1 specifica che il codice del punto gamma come caratteri di controllo, che non hanno alcuna rappresentazione grafica.

    ISO-8859-1 è composto da i primi 256 caratteri di Unicodes di Base Multilinigual Piano, che coprono l’intero dominio di un carattere a 8 bit (0x00–0xFF). Per informazioni e confronto di vedere

    Lingue dell’europa occidentale, che avrà un momento difficile con questa sequenza di confronto comprendono (ma non sono necessariamente limitati a), lettone, lituano, Polich, ceco e slovacco. Se avete bisogno di supporto di coloro che, è necessario utilizzare un diverso, le regole di confronto di SQL Server offre una pletora di regole di confronto), o passare a utilizzare nvarchar.

    Si deve notare che la miscelazione di confronto all’interno di un database che tende a causare problemi. Deviazione per le regole di confronto predefinite dovrebbe essere fatto solo quando è necessario e con una comprensione di come si può spararsi in un piede con esso.

    Ho il sospetto Oracle e DB2 fornire un supporto simile. Non so su MySQL o altre implementazioni.

    • Questa affermazione è sbagliata: “”Windows 1252″ codice della pagina, che è ISO-8859-1”. No non lo è! Windows-1252 non è ISO-8859-1. Windows-1252 non è ISO-8859-1. Windows-1252 non è ISO-8859-1. quello Che ti dico tre volte è vero.
    • Allora forse si dovrebbe, in realtà, letto la frase come è scritto: che È costruito su “Windows 1252” codice pagina, che è ISO-8859-1, con il codice del punto gamma 0x80-0x9F…sostituito da glifi alternativi. Che è una vera dichiarazione. Che è il delta tra ISO-8859-1 e Windows 1252.
    • Questo è il “Mangiare i Germogli e le Foglie” problema: una virgola fuori posto cambia il senso della frase del tutto. Mettendo la virgola davanti alla con, si trasformò in qualcosa che non è. È come la differenza tra “vado a chiedere al mio amico, che [avviene] mangiare brocolli” e “vado a chiedere al mio amico [quello] che mangia brocolli.” Vedi? Sarebbe molto più chiaro se ha letto “È costruito su Windows-1252, che è come ISO-8859-1, tranne che il codepoint gamma…” Nota che “il codice della pagina” è un termine straniero per molti di noi, e certamente non comporta l’aggiunta di informazioni, e così deve essere omesso.
    • E ‘ anche molto male a far finta che Latin1 significa Windows-1252. Non! Latin1 è un IANA-registrato alias per ISO-8859-1, non per Windows-1252. Questo è solo un altro fallo di esempio di Microsoft hoodwinking suoi utenti da corrompere stabilito standard formali e chiamare le cose con il fuorviante inadeguato e non corretto — nomi.
    • Penso che lei ha bisogno di licenziare più caffiene questa mattina. Si prega di prendere il vostro editorializing altrove.
    • Forse la pena di ricordare, le regole di confronto predefinite possono essere determinati utilizzando SELECT SERVERPROPERTY('Collation')
    • Forse pignoleria, ma il lettone, lituano, polacco, ceco e slovacco non sono le lingue dell’europa Occidentale, e in particolare nel contesto di set di caratteri. Il lettone, lituano sono ‘Nord Europea, latino-4 / ISO-8859-4, e polacco, ceco e slovacco sono ‘Centrale Europea, latina-2 / ISO-8859-2.

  2. 5

    I caratteri che possono essere memorizzati in un campo varchar dipende interamente da ciò che il codice della pagina è definito per quel particolare campo. Se ci sono caratteri specifici che si desidera conservare, è possibile scegliere una pagina di codice che si store di quei personaggi, e dovrebbe funzionare. Male.

    Il mio consiglio è di utilizzare sempre di tipo nvarchar per memorizzare le stringhe in un database SQL. Infatti, vorrei prendere in considerazione non Unicode codifica dei caratteri di un bug, se è in un database o in qualsiasi altro luogo.

    Tuo sistema operativo utilizza Unicode internamente (sia Windows, Mac, Linux, o qualsiasi altra cosa). La JVM e il .NET Framework utilizzare Unicode internamente. Semplicemente non c’è punto a fare la pagina di codice conversioni ogni volta che si esegue una query di un database. Non c’è nessun punto a fare la pagina di codice conversioni ogni volta che si scrive su un database. Basta usare una colonna di tipo nvarchar, e le stringhe andrà direttamente dall’applicazione al database intatta—nessun personaggio di conversione delle ricerche, di ripiego codifica gestori di errore, niente di strano o di personaggi inaspettati punti di domanda.

    Utilizzando nvarchar per tutti di una stringa di dati nel vostro database e Unicode, in generale, ovunque, si può smettere di voi in relazione con le codifiche e di concentrarsi sulle funzionalità principali dell’applicazione, ora e per sempre.

    Oggi è il giorno di abbandonare legacy codifiche dei caratteri.

    Farlo per i manutentori che vengono dopo di te. Fallo per i tuoi figli. Fare per se stessi.

    • Ahimè, uno dei principali motivi di questa base di dati è quello di parlare di un sistema medico che filtra tutti Unicode. A causa di questo, qualsiasi comunicazione che ho con che sistema devono essere nel non-unicode. Quindi ho bisogno per forza non unicode per i dati, ho capito. Questa è proprio una di quelle volte che la situazione di unicode onu necessario.
    • Considerate questo: è possibile memorizzare i dati nel sistema correttamente, e di applicare il filtro quando si comunica con gli altri (legacy) del sistema. Poi, quando l’altro sistema, infine, gli aggiornamenti, il sistema e tutti i dati saranno pronti. Dopo tutto, la vostra applicazione, che utilizza Unicode internamente se è costruito con qualsiasi piattaforma moderna) avrà il varie più punti di comunicazione con i tuoi dati che il sistema esterno. E inoltre, proprio per il principio della cosa, nomi di persone dovrebbe essere scritto correttamente!
    • Oh, e un altro punto molto importante! colonne varchar può essere impostato per una varietà di pagine di codice. Se si decide di attaccare con varchar contro il mio consiglio, quindi, verificare che il codice della pagina che hai scelto partite qualunque pagina di codice è utilizzato da un altro sistema che si sta comunicando con. Quindi almeno gli errori saranno coerenti, e non sarà la creazione di ulteriori errori. Se si prende il mio consiglio e andare su Unicode ovunque, poi presso i punti di comunicazione con l’altro sistema, si dovrà fare una conversione della codifica, ed è, altresì, indispensabile che il codice della pagina corrisponde l’altro sistema.
  3. 2

    Alcune informazioni eccellente, in particolare da Nicola Carey, ma nessuno ha dato direttamente un sì/no risposta alla tua domanda…

    Sì, è possibile utilizzare varchar per gestire un mix di francese e spagnolo, fornire il set di caratteri di Windows-1252 (o una simile moderna superset di ISO-8859-1 con un paio di personaggi come il simbolo dell’Euro). In SQL Server, il set di caratteri è scelto impostando le regole di confronto (a livello di server, al database o per colonna): Windows-1252 è utilizzato dall’ *Latin1* regole di confronto. In MySQL, Windows-1252 è chiamato Latin1.

    Di notare che se si tenta di memorizzare un carattere al di fuori del repertorio del personaggio scelto, il sistema può generare un errore, o in silenzio munge il personaggio in una simile dal suo repertorio. E. g. SQL Server si munge un polacco £ per una semplice, ma genera un errore per un carattere Giapponese.

Lascia un commento