sql >> Databasteknik >  >> RDS >> Oracle

skillnad mellan NLS_NCHAR_CHARACTERSET och NLS_CHARACTERSET för Oracle

I allmänhet är alla dina poäng korrekta. NLS_NCHAR_CHARACTERSET definierar teckenuppsättningen för NVARCHAR2 , et. al. kolumner medan NLS_CHARACTERSET används för VARCHAR2 .

Varför är det möjligt att du ser kinesiska tecken med US7ASCII ?

Anledningen är din databasteckenuppsättning och din klientteckenuppsättning (dvs. se NLS_LANG värde) är båda US7ASCII . Din databas använder US7ASCII och den "tror" att klienten också skickar data med US7ASCII . Den gör alltså ingen konvertering av strängarna, data överförs bit för bit från klient till server och vice versa.

På grund av detta kan du använda tecken som faktiskt inte stöds av US7ASCII . Var medveten om, om din klient använder en annan teckenuppsättning (t.ex. när du använder ODP.NET Managed Driver i en Windows-applikation) kommer data att vara skräp! Om du skulle överväga en migrering av databasteckenuppsättning har du samma problem.

En annan notering:Jag tror inte att du skulle få samma beteende med andra teckenuppsättningar, t.ex. om din databas och din klient båda skulle använda WE8ISO8859P1 till exempel. Tänk också på att du faktiskt har fel konfiguration. Din databas använder teckenuppsättningen US7ASCII , din NLS_LANG värdet är också US7ASCII (mest troligt är den inte inställd alls och Oracle använder den som standard till US7ASCII ) men den verkliga teckenuppsättningen av SQL*Plus, resp. din cmd.exe terminalen är troligen CP950 eller CP936.

Om du vill ställa in allt korrekt kan du antingen ställa in din miljövariabel NLS_LANG=.ZHT16MSWIN950 (CP936 verkar inte stöds av Oracle) eller ändra din teckentabell innan du kör sqlplus.exe med kommandot chcp 437 . Med dessa korrekta inställningar kommer du inte att se några kinesiska tecken som du förmodligen hade förväntat dig.




  1. SSIS källformat Implicit konvertering för datum och tid

  2. Hur listar du primärnyckeln för en SQL Server-tabell?

  3. SQL Server 2016:Skapa en tabell från ett SQL-skript

  4. Fler showplanförbättringar? Ja tack!