Inilah yang mungkin terjadi:
- Set karakter klien Anda harus seperti CP1252 atau ISO-8859-15 padahal sebenarnya klien Anda benar-benar menggunakan UTF8.
- Dalam rangkaian karakter ini (UTF8), simbol
á
membutuhkan dua byte, jadi klien Anda mengirim dua byte ini, sambil memberi tahu Oracle untuk memperlakukannya sebagai CP1252. Dalam CP1252 dua byte kode untuk dua karakter yang mengakibatkan DB menafsirkan input sebagai dua karakter, oleh karena itulength('à')
sama dengan 2 (dan jika Anda memasukkan string ini, hasil penyisipan tidak sama denganà
) - Bila Anda menyetel set karakter dengan benar, input diperlakukan dengan benar oleh Oracle sebagai satu karakter, dan panjangnya adalah 1 (masih dua byte).
Kesimpulan:atur set karakter klien Anda dengan benar atau Anda akan mendapatkan kesalahan terjemahan (Anda tidak akan mendapatkan karakter ilegal dengan cara ini tetapi Anda mungkin mendapatkan simbol aneh (¿
).
Kumpulan karakter basis data diatur pada saat pembuatan dan umumnya diubah melalui ekspor/buat basis data kosong/impor.