Estou trabalhando com um projeto no qual será global e aplicado para cerca de 80 países e o sistema tem que aceitar caracteres chineses e outros idiomas que são bem diferentes do nosso.
Primeiramente gostaria de compartilhar algumas informações que serão úteis para análise.
NLS_LANGUAGE: AMERICAN
NLS_CHARACTERSET: WE8ISO8859P1
NLS_NCHAR_CHARACTERSET: AL16UTF16
Eu até consegui armazenar caracteres chineses salvando em Unicode no banco em campos NVARCHAR2, porém o que era pra ser 1 caractere no banco é salvo 8 posições, veja exemplo abaixo:
Estou salvando desta forma na minha aplicação que esta desenvolvida com a linguagem ASP:
sql = "update TABELA_TRADUCAO SET chines_simp = UNISTR('"&server.HTMLEncode("语言测试")&"') where pkni_traducao=529"
Conn.execute(sql)
语言测试
no banco fica isso: 语言测试
O que era pra ser isso:
产
no banco fica isso: 产
, ou seja, sempre multiplicando por 8x o que deve ser normal para UTF.Outra coisa estranha que notei, se eu faço o update direto no pl/sql não salva corretamente, veja como fica no banco:
í KÕ
.Já tentei fazer update com
N’语言测试’
e UNISTR(‘语言测试’)
mesmo assim não da certo.O engraçado é que pela GUI do PL/SQL eu copio os caracteres chineses e dou um Ctrl+V para editar pela parte gráfica e salva corretamente com os caracteres chineses ocupando a posição que deveria ocupar normalmente.
Sei que esta meio extenso o post mas gostaria de ajuda de vocês sobre como eu posso salvar os caracteres chineses manualmente de forma que fique igual a como faço o update na GUI do PL/SQL.
Se precisarem de mais alguma informação por favor me deixem saber e de antemão agradeço a ajuda dos amigos.