sql >> Databáze >  >> RDS >> Oracle

Oracle nastavil výchozí NLS_LANG

Pravděpodobně se stane toto:

  • Znaková sada vašeho klienta musí být něco jako CP1252 nebo ISO-8859-15, zatímco ve skutečnosti váš klient skutečně používá UTF8.
  • V této znakové sadě (UTF8) je to symbol á trvá dva bajty, takže váš klient pošle tyto dva bajty a zároveň řekne Oracle, aby je považoval za CP1252. V CP1252 dva bajty kódují dva znaky, což vede k tomu, že DB interpretuje vstup jako dva znaky, proto length('à') rovná se 2 (a pokud vložíte tento řetězec, výsledek vložení se nerovná à )
  • Když správně nastavíte znakovou sadu, bude se vstupem správně zacházet oracle jako s jedním znakem a jeho délka je 1 (stále dva bajty).

Závěr:nastavte svou klientskou znakovou sadu správně, jinak dojde k chybám překladu (takto nezískáte nepovolené znaky, ale můžete získat podivné symboly (¿ ).

Znaková sada databáze je nastavena při vytvoření a obecně se mění pomocí exportu/vytvoření prázdné databáze/importu.



  1. Chyba binárního protokolu v mysql

  2. Jak zacházet s výjimkou při přidávání duplicitního uživatelského jména do databáze v aplikaci spring mvc

  3. Funkce min(uuid) v postgresql neexistuje

  4. Jak naskriptuji soubor php, aby se zobrazil obrázek jako <img src=/img.php?imageID=32 />?