Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
olá
Tenho um site em portugues, russo e madarim feito em ASP e bd mysql:
No meu server:
Mysql
collation: utf8_general_ci
servers defaults: latin1_swedish_ci
MySQL ODBC 5.1 Driver
IIS7.0
os arquivos asp estão em UTF-8
funciona tudo bem!
Coloquei apenas os ficheiros ASP no server do cliente;
Tenho de alterar conexão para MySQL ODBC 3.51 Driver mas ligando ao meu servidor de base dados e os textos ficam ilegiveis em russo ou chines.
o que o que poderá estar aqui a falhar?
cumprimentos
Miguel
Geralmente no MySQL eu defino um collation padrão. No Brasil o Latin1 é o mais utilizado, então o CHARSET (codificação de caracteres) padrão em vários hosts é o Latin1 e o COLLATE (collation) padrão é o latin1_general_ci. Scripts externos podem utilizar UTF8 e geralmente é por causa da diferença de codificação entre Latin1 e UTF8 que ocorrem erros de acentuação.
A seguir estão alguns exemplos para definir um collation padrão para a sua base de dados:
ALTER DATABASE sua_base CHARSET = Latin1 COLLATE = latin1_swedish_ci;
ou
ALTER DATABASE sua_base CHARSET = UTF8 COLLATE = utf8_general_ci;
CHARSET e COLLATE são coisas distintas, no MySQL, cada CHARSET possui COLLATEs, cada um com sua particularidade. O intuito deste Wiki não é explicar as características de cada um deles, pois pode ser visto da documentação do MySQL, mas daremos um pequeno descritivo entre latin1_general_ci, latin1_general_cs e latin1_swedish_ci.
-
latin1_general_ci: Não há distinção entre letras maiúsculas e minúsculas. Buscando por “teste”, registros como “Teste” ou “TESTE” serão retornados.
-
latin1_general_cs: Distingue letras maiúsculas e minúsculas. Buscando por “teste” somente retornará “teste”. Opções como “Teste” e “TESTE” não serão retornadas.
-
latin1_swedish_ci: Não distingue letras minúsculas e maiúsculas e nem caracteres acentuados e com cedilha, ou seja, o registro que contém a palavra “Intuição” será retornado quando houver uma procura pela palavra “intúicao”.
Quando você estiver exportando os dados da sua base de dados de origem, certifique-se de estar especificando a codificação corretamente. No phpMyAdmin há um menu DropDown próximo às opções de compactação ‘nenhum’, ‘zip’, ‘gzip’ e ‘bzip’ que normalmente está selecionada a opção ‘utf-8’. Mantenha este se sua base estiver com este CHARSET, do contrário, especifique ‘iso-8859-1’ caso ela esteja com o CHARSET Latin1.Faça o mesmo durante a importação. Ao enviar o arquivo, o menu DropDown estará como ‘utf-8’, se o CHARSET da base for ‘Latin1’ escolha o ‘iso-8859-1’.
Para chines, o uso do Big5 ou gb2312.
No entanto, atualmente os browsers reconhecem também o UTF-8 para chinês.
Em Russo, ídem.
Um aspecto importante, sobre os caracteres chineses, o charset mais adequado seria o conjunto UTF-16, todavia o UTF-8 é suficiente.
No Banco de dados aplique:
CHARACTER SET utf8 COLLATE 'utf8_general_ci'
O mesmo se aplica ao cabeçalho vbscript e meta tage html
No meu servidor onde trabalho consigo ver tudo bem em chines, russo etc.
Quando passo apemas os arquivos asp para outro servidor que fazem conexão à minha bd é que não consigo ver o texto chines e russo.
O que estará aqui a faltar? a BD é a mesma só é acedida por locais diferentes!!!
obrigado dede já pela ajuda
Miguel
é o collationde seu bd, altere conforme mencionei acima.
Fiz o que disse mas ainda não resolveu. CHARACTER SET utf8 COLLATE 'utf8_general_ci'
descobri agora que pelo/applications/core/interface/imageproxy/imageproxy.php?img=https://web33.esoterica.pt:8443/domains/databases/phpMyAdmin/themes/original/img/logo_left.png&key=04e2421fd0920a667a07a97ea9bd8e437f3d682e6f9a31331b5bd74bf0b56d8e" alt="logo_left.png" /> (é uma página web) consigo ver o conteúdo da tabela sem problemas em chines e russo. quando mando listar no meu asp não dá certo.
no topo dos meus ficheiros asp tenho as linhas
<%@Language="VBScript" CodePage="65001"%>
.....
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Você tentou usar o charset iso-8859-1?
Att;
no post #3... ao menos coloque a fonte da resposta...
http://forum.imasters.com.br/topic/487391-qual-o-melhor-charsert/?p=1937170
e pior deu um ctrl+c ctrl+v sem revisar...
na parte final, "meta tage html" -> "meta tag html"
será que a comexao pode ajudar a resolver? eu tenho assim:
conn.ConnectionString="DRIVER={MySQL ODBC 3.51 Driver}; SERVER="&srv&"; DATABASE="&bd&"; UID="&uid&";PASSWORD="&pws&"; OPTION=3"
verifique se seu driver do bd está atualizado e tente inserir usar o Response.CharSet = "ISO-8859-1".
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001" Response.Charset="ISO-8859-1" %>
E no cabeçalho do site coloque a meta tag <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />e
dê uma procurada no fórum, que existem alguns tópicos referente a isso e tem várias respostas minhas que pode te ajudar.
Eu acho que o problema esta no charset da sua pagina.
Quando for em outra linguagem deve mostrar a charset correspondente aquela lingua.
Por exemplo
%
if request.querystring("linguage")="pt" then
response.charset="utf-8"
elseif request.querystring("linguage")="ru" then
response.charset="utf-1"
request.querystring("linguage")="ch" then
response.charset="utf-2"
end if
%
Os exemplos que usei de charset acima é só um exemplo, somente o utf-8 que existe.
Att;