none
Agrupamento Caracteres Hebraico RRS feed

  • Pergunta

  • Boa noite Amigos,

    Estou tentando criar um banco de dados que contém tabelas com dados em hebraico. Eu tentei criar o banco com o agrupamento de Hebrew_CI_AS, Hebrew_CI_AS_KS_WS e Hebrew_CS_AS_KS_WS, porém ele ainda não reconhece alguns caracteres.

    O texto que estou utilizando na tabela é: 

    עֵינָיו֙ וַיַּ֔רְא 

    porém após digitar na tabela e salvar, ele aparece:

    עֵינָיו? וַיַּ?רְא

     

    Eu não tenho um profundo conhecimento, por isso eu peço a gentileza de me ajudar.

    Grato,

    Fábio

    Obs: Estou utilizando Microsoft SQL Server Management Studio 2017

    Na tabela, estou utilizando a variável varchar(50)


    • Editado FabioFerr sexta-feira, 18 de agosto de 2017 00:29 correção
    sexta-feira, 18 de agosto de 2017 00:28

Respostas

  • esta pesquisando o assunto e vi esse post

    https://sqlfromhell.wordpress.com/2013/02/14/introducao-ao-sql-server-aula-2-1/

    Neste fala que o tipo correto de dados e o NVARCHAR

    "Também há tipos de dados específicos para armazenar caracteres de outros idiomas, como árabe, hebraico, chinês e coreano, tendo um prefixo N, como NCHAR e NVARCHAR, utilizando 2 bytes para cada caractere, tendo assim tamanho fixo limitado à 4000 caracteres."

    Alem disso veja se o Colattion do Banco de Dados está correto, 

    tem que ser o 

    Latin1_General_CI_AI , veja o exemplo abaixo , se não for rode o alter database para o

    SELECT D.name,D.database_id,D.collation_name FROM sys.databases AS D
    WHERE D.name ='SeuBanco'
    
    --  Latin1_General_CI_AI
    
    --ALTER DATABASE TreinamentoCertificacao  COLLATE Latin1_General_CI_AI
    
    
    CREATE TABLE VariosIdiomas 
    (
      texto NVARCHAR(200),
      Idioma VARCHAR(30)
    )
    
    -- INSERT ARABE
    INSERT INTO dbo.VariosIdiomas
            ( texto, Idioma )
    values( N'دون اللجوء إلى محام أمام محكمة جرائم الحرب في لاهاي. وقال كاراديتش اليوم الأربعاء إنه متيقن من أن المحكمة ستبرئه من التهم المنسوبة إليه بجرائم حرب. في حين لقي خبر اعتقاله ترحيبا دوليا.', 'ARABE' )
    
    SELECT * FROM dbo.VariosIdiomas AS VI
    
    -- RUSSO
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'в специальных символов', 'RUSSO' )
    
    -- GREGO
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'χαρακτήρες σε ειδική', 'GREGO' )
    
    -- CHINES
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'在特殊字符', 'CHINES' )
    
    GO
    
    -- COREANO
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'문자를 특수', 'COREANO' )
    
    GO
    
    	insert into VariosIdiomas( texto, idioma )
    
    	values( N'測試', 'CHINES' )
    
    
    SELECT * FROM dbo.VariosIdiomas AS VI

    Exemplo retirado do post

    https://social.msdn.microsoft.com/Forums/sqlserver/pt-BR/b2c1aa73-3daf-424a-a017-de8098174fc5/armazenar-caracteres-independente-do-idioma-do-usurio-final?forum=520

    Wesley Neves - Brasilia-DF

     
    wesley.si.neves@gmail.com
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"




    • Editado Wesley Neves sexta-feira, 18 de agosto de 2017 11:59 complemento
    • Marcado como Resposta FabioFerr sexta-feira, 18 de agosto de 2017 13:26
    sexta-feira, 18 de agosto de 2017 11:57

Todas as Respostas

  • esta pesquisando o assunto e vi esse post

    https://sqlfromhell.wordpress.com/2013/02/14/introducao-ao-sql-server-aula-2-1/

    Neste fala que o tipo correto de dados e o NVARCHAR

    "Também há tipos de dados específicos para armazenar caracteres de outros idiomas, como árabe, hebraico, chinês e coreano, tendo um prefixo N, como NCHAR e NVARCHAR, utilizando 2 bytes para cada caractere, tendo assim tamanho fixo limitado à 4000 caracteres."

    Alem disso veja se o Colattion do Banco de Dados está correto, 

    tem que ser o 

    Latin1_General_CI_AI , veja o exemplo abaixo , se não for rode o alter database para o

    SELECT D.name,D.database_id,D.collation_name FROM sys.databases AS D
    WHERE D.name ='SeuBanco'
    
    --  Latin1_General_CI_AI
    
    --ALTER DATABASE TreinamentoCertificacao  COLLATE Latin1_General_CI_AI
    
    
    CREATE TABLE VariosIdiomas 
    (
      texto NVARCHAR(200),
      Idioma VARCHAR(30)
    )
    
    -- INSERT ARABE
    INSERT INTO dbo.VariosIdiomas
            ( texto, Idioma )
    values( N'دون اللجوء إلى محام أمام محكمة جرائم الحرب في لاهاي. وقال كاراديتش اليوم الأربعاء إنه متيقن من أن المحكمة ستبرئه من التهم المنسوبة إليه بجرائم حرب. في حين لقي خبر اعتقاله ترحيبا دوليا.', 'ARABE' )
    
    SELECT * FROM dbo.VariosIdiomas AS VI
    
    -- RUSSO
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'в специальных символов', 'RUSSO' )
    
    -- GREGO
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'χαρακτήρες σε ειδική', 'GREGO' )
    
    -- CHINES
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'在特殊字符', 'CHINES' )
    
    GO
    
    -- COREANO
    
    insert into VariosIdiomas( texto, idioma )
    
    values( N'문자를 특수', 'COREANO' )
    
    GO
    
    	insert into VariosIdiomas( texto, idioma )
    
    	values( N'測試', 'CHINES' )
    
    
    SELECT * FROM dbo.VariosIdiomas AS VI

    Exemplo retirado do post

    https://social.msdn.microsoft.com/Forums/sqlserver/pt-BR/b2c1aa73-3daf-424a-a017-de8098174fc5/armazenar-caracteres-independente-do-idioma-do-usurio-final?forum=520

    Wesley Neves - Brasilia-DF

     
    wesley.si.neves@gmail.com
    MTA-SQL Server
    MTA- Web Development
    Analista Desenvolvedor.NET
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"




    • Editado Wesley Neves sexta-feira, 18 de agosto de 2017 11:59 complemento
    • Marcado como Resposta FabioFerr sexta-feira, 18 de agosto de 2017 13:26
    sexta-feira, 18 de agosto de 2017 11:57
  • Deleted
    sexta-feira, 18 de agosto de 2017 12:21
  • Bom dia Wesley,

    Agradeço sua resposta, na tabela usei a variável nvarchar e deu certo. O agrupamento está como: Latin1_GENERAL_CI_AS.

    Fábio

    sexta-feira, 18 de agosto de 2017 13:26
  • Olá José,

    A versão é 2017 v17.1 do Microsoft SQL Server Management Studio 2017

    Att,

    Fábio

    sexta-feira, 18 de agosto de 2017 13:27
  • Bom dia Wesley,

    Agradeço sua resposta, na tabela usei a variável nvarchar e deu certo. O agrupamento está como: Latin1_GENERAL_CI_AS.

    Fábio

    Fabio,

    Neste caso, não vejo a necessidade de alterar o Collation do seu banco, basta somente fazer a utilização datatype NVarchar ou NChar, vale ressaltar que ambos os tipos de dados trabalham com a tabela de caracteres Unicode, que permite justamente trabalhar com diversos idiomas e caracteres.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 23 de agosto de 2017 23:17
    Moderador