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, protolength('à')
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.