none
CODIFICAÇÃO DE CARACTERES RRS feed

  • Pergunta

  • Fala galera, tudo certo?

     

    estou com um probleminha na conversão de caracteres do sql server 2005, por padrão a codificação do banco está SQL_Latin1_General_CP1_CI_AI e gostaria de converter para utf8, Em mysql eu consigo usando o comando mysql_query(SET NAMES 'utf8'),  mas a pergunta é, como eu faço isso com a biblioteca mssql? mssql_query(.......?).

    quinta-feira, 11 de setembro de 2014 12:41

Todas as Respostas

  • Bruno se sua base não for grande, uma solução simples seria criar uma nova base com a Collation correta e migrar tudo para essa nova base.

    1. Crie a nova base com a collation correta

    2. Gere um script com todos os objetos e dados (se sua base não for grande).

    3. Abra o script e execute um "replace" trocando a Collation antiga pela nova.

    4. Execute o script na nova base.


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    quinta-feira, 11 de setembro de 2014 12:49
  • Bruno,

    Para converter um Collation de uma coluna, sem alterar a estrutura da tabela (apenas na consulta) você utiliza o parâmetro Collate. Veja no script abaixo:

    SELECT NM_PESSOA collate SQL_Latin1_General_CP1_CI_AS
    FROM SuaTabela;
    GO

    O SQL Server trabalha corretamente com os caracteres no formato UFT-8 desde que os campos de texto utilizem os datatypes: nchar e nvarchar

    Este post no Blog MSDN indica que o UTF-8 é suportado, desde a edição SQL Server 7.0 e dependendo do collation utilizado. No seu caso, "Latin_General_CI_AS" é suportado, veja:

    http://blogs.msdn.com/b/qingsongyao/archive/2009/04/10/sql-server-and-utf-8-encoding-1-true-or-false.aspx

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms186939(v=sql.100).aspx

    http://technet.microsoft.com/en-us/library/bb330962(v=sql.90).aspx

    http://msdn.microsoft.com/pt-br/library/ms143726.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quinta-feira, 11 de setembro de 2014 12:57
    Moderador
  • Bom pessoal, deixa eu explicar melhor, na realidade de jeito nenhum eu vou poder criar outro database, pois estou trabalhando na integração de um Sistema de Gestão Acadêmica (SGA) como um Sistema de Aprendizagem Online (moodle), o meu SGA usa o banco sql server 2005 com a codificação citada no primeiro tópico, e o moodle usa mysql com codificação utf8, até aqui tudo bem, o problema é que na API de integração do moodle ele pede a codificação do SGA e pede também o comando para conversão de caracteres para que seja possível inserir os dados no mysql. Deixei uma imagem para que vocês possam entender melhor, segue o link:

    http://uploaddeimagens.com.br/imagens/imagem-jpg--755

    Muito Obrigado, Tulio e Durval pela atenção de vocês.


    quinta-feira, 11 de setembro de 2014 13:09
  • Bom pessoal, deixa eu explicar melhor, na realidade de jeito nenhum eu vou poder criar outro database, pois estou trabalhando na integração de um Sistema de Gestão Acadêmica (SGA) como um Sistema de Aprendizagem Online (moodle), o meu SGA usa o banco sql server 2005 com a codificação citada no primeiro tópico, e o moodle usa mysql com codificação utf8, até aqui tudo bem, o problema é que na API de integração do moodle ele pede a codificação do SGA e pede também o comando para conversão de caracteres para que seja possível inserir os dados no mysql. Deixei uma imagem para que vocês possam entender melhor, segue o link:

    http://uploaddeimagens.com.br/imagens/imagem-jpg--755

    Muito Obrigado, Tulio e Durval pela atenção de vocês.


    Bruno,

    Se você precisa armazenar os dados em uma tabela de seu banco, você poderá definir um Collation diferente do determinado para o banco em cada coluna de texto (nchar ou nvarchar).

    É importante identificar à equivalência do tipo de dados MySQL com o SQL Server. Veja o documento abaixo:

    http://msdn.microsoft.com/en-us/library/hh313106(v=sql.110).aspx

    No link abaixo, existe um exemplo para conversão de caracteres:

    http://msdn.microsoft.com/en-us/library/ms180059.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quinta-feira, 11 de setembro de 2014 14:08
    Moderador
  • Isso vai lhe ajudar:

    How to: Send and Retrieve UTF-8 Data Using Built-In UTF-8 Support

    http://technet.microsoft.com/en-us/library/cc626307(v=sql.105).aspx

    []´s 

    quinta-feira, 11 de setembro de 2014 14:10