Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mmalainho

Russo e chines não lista corretamente da base dados

Recommended Posts

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

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o collationde seu bd, altere conforme mencionei acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o que disse mas ainda não resolveu. CHARACTER SET utf8 COLLATE 'utf8_general_ci'

 

descobri agora que pelologo_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" />


Compartilhar este post


Link para o post
Compartilhar em outros sites

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"

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.