none
Netsis Turkce Karakter Sorunu RRS feed

  • Soru

  • Merhabalar,

    Netsis kullanıcıları, database'nin Türkçe karakter sorunundan muzdarip.

    Dili değiştiremeyince Functions ile sorunun üstesinden gelmekte.

    Bende aşağıdaki gömülü fonksiyon ile işimi çözmeye çalışıyorum.

    Fakat ne yaparsam yapayım İ > I, Ğ > G, Ş > S oluyor

    Ş yerine S

    İ yerine I

    Ğ yerine G olarak görüntülüyorum. Çaresini bulan var mı ?


    ------------------------------------------------------------------------

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER FUNCTION  [dbo].[TRK2]   ( @girdi VARCHAR(MAX) )
    RETURNS VARCHAR(MAX)
    AS
    BEGIN
    DECLARE @sonuc VARCHAR(MAX)
    SET @sonuc = @girdi
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'ğ');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'Ğ'); 
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN, N'Ð', N'Ğ');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ý', N'ı');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Ý', N'İ');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'þ', N'ş');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Þ', N'Ş'); 
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(220), N'Ü')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(214), N'Ö')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(199), N'Ç')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(73), N'I')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(252), N'ü')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(246), N'ö')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(231), N'ç')
    RETURN @sonuc COLLATE Turkish_CI_AS ;
    END
    GO

    25 Ağustos 2020 Salı 12:35

Tüm Yanıtlar

  • Veritabanı ve ilgili fieldların collation'ını ne? Turkish_CI_AS gibi olduğundan emin olun.

    www.cihanyakar.com

    25 Ağustos 2020 Salı 13:10
  • Merhaba,

    Alternatif olarak kodu aşağıdaki gibi değiştirip deneyebilir misiniz.

    ALTER FUNCTION  [dbo].[TRK2]   ( @girdi nVARCHAR(MAX) )
    RETURNS VARCHAR(MAX)
    AS
    BEGIN
    DECLARE @sonuc NVARCHAR(MAX)
    SET @sonuc = @girdi
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'ğ');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ð', N'Ğ'); 
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN, N'Ð', N'Ğ');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'ý', N'ı');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Ý', N'İ');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'þ', N'ş');  
    SET @sonuc = Replace(@sonuc COLLATE Latin1_General_BIN,N'Þ', N'Ş'); 
    SET @sonuc = REPLACE(@sonuc COLLATE Latin1_General_BIN, CHAR(220), N'Ü')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(214), N'Ö')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(199), N'Ç')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(73), N'I')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(252), N'ü')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(246), N'ö')
    SET @sonuc = REPLACE(@sonuc COLLATE LATIN1_GENERAL_BIN, CHAR(231), N'ç')
    RETURN @sonuc COLLATE Turkish_CI_AS ;
    END
    
    GO


    Vedat ÖZER vedatozer@outlook.com

    25 Ağustos 2020 Salı 13:20
  • Collection: SQL_Latin1_General_CP1_CI_AS

    Netsis bunun değiştirilmesine izin vermiyor.

    25 Ağustos 2020 Salı 14:33
  • Öncesi böyleydi, yine de olmuyordu.

    Çok ilginç "Þ" bu karakter "S" oluyor "Ş" olmuyor :(

    25 Ağustos 2020 Salı 14:34
  • HakanP sorunu halledebildiniz mi bana ulasırsanız sevinirim 0546 613 71 25

    15 Kasım 2022 Salı 15:22