Delphi Can

Orjinalini görmek için tıklayınız: Türkçe karakter sorunu
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhabalar,,

Kiralık Sunucuda SQL Server da Türkçe karakterler kayıt edilip, okunduğu halde

Bu tabloyu delphi ye yansıttığımda ı,ğ,ş,İ,Ğ,Ş harflerini değiştriyor.

Bunu nasıl halledebilirim.

Normalde kendi bilgisayarımda herhangi bir problem olmuyor. Ama Sunucudu Olmuyor.

[attachment=2766]
(31-08-2024, Saat: 15:00)barissagir Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar,,

Kiralık Sunucuda SQL Server da Türkçe karakterler kayıt edilip, okunduğu halde

Bu tabloyu delphi ye yansıttığımda ı,ğ,ş,İ,Ğ,Ş harflerini değiştriyor.

Bunu nasıl halledebilirim.

Normalde kendi bilgisayarımda herhangi bir problem olmuyor. Ama Sunucudu Olmuyor.

bunu deneyebilirsin  sunucuda veya local bilgisayardaki database dosyasına aşağıdaki fonksiyonu ekleyin
database seçili iken new query aç yapıştır 

Create Function  [senin veritabanını adı]
GO
/****** Object:  UserDefinedFunction [dbo].[TRK]    Script Date: 31.08.2024 15:08:07 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[TRK](@A NVARCHAR(4000))
RETURNS NVARCHAR(4000)  
AS 
BEGIN
 DECLARE @TMP NVARCHAR(4000) 
 SET @TMP = REPLACE(@A   COLLATE LATIN1_GENERAL_BIN, CHAR(208), N'Ğ')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(220), N'Ü')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(222), N'Ş')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(221), N'İ')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(214), N'Ö')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(199), N'Ç')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(73), N'I')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(240), N'ğ')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(252), N'ü')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(254), N'ş')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(105), N'i')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(246), N'ö')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(231), N'ç')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(253), N'ı')
 RETURN @TMP
END
 
kullanırken Türkçe sorunu olan alan isimlerini bu foksiyon ile çağır

örnegi select  ADI from xx database yerine 
select TRK(ADI) from xx database

sorun delphi veya sizde değilde  sql kurulumundaki  Server Collation  =  Turkish_CI_AS   ayarından
(31-08-2024, Saat: 15:18)cinarbil Adlı Kullanıcıdan Alıntı: [ -> ]
(31-08-2024, Saat: 15:00)barissagir Adlı Kullanıcıdan Alıntı: [ -> ]Merhabalar,,

Kiralık Sunucuda SQL Server da Türkçe karakterler kayıt edilip, okunduğu halde

Bu tabloyu delphi ye yansıttığımda ı,ğ,ş,İ,Ğ,Ş harflerini değiştriyor.

Bunu nasıl halledebilirim.

Normalde kendi bilgisayarımda herhangi bir problem olmuyor. Ama Sunucudu Olmuyor.

bunu deneyebilirsin  sunucuda veya local bilgisayardaki database dosyasına aşağıdaki fonksiyonu ekleyin
database seçili iken new query aç yapıştır 

Create Function  [senin veritabanını adı]
GO
/****** Object:  UserDefinedFunction [dbo].[TRK]    Script Date: 31.08.2024 15:08:07 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[TRK](@A NVARCHAR(4000))
RETURNS NVARCHAR(4000)  
AS 
BEGIN
 DECLARE @TMP NVARCHAR(4000) 
 SET @TMP = REPLACE(@A   COLLATE LATIN1_GENERAL_BIN, CHAR(208), N'Ğ')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(220), N'Ü')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(222), N'Ş')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(221), N'İ')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(214), N'Ö')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(199), N'Ç')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(73), N'I')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(240), N'ğ')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(252), N'ü')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(254), N'ş')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(105), N'i')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(246), N'ö')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(231), N'ç')
 SET @TMP = REPLACE(@TMP COLLATE LATIN1_GENERAL_BIN, CHAR(253), N'ı')
 RETURN @TMP
END
 
kullanırken Türkçe sorunu olan alan isimlerini bu foksiyon ile çağır

örnegi select  ADI from xx database yerine 
select TRK(ADI) from xx database

sorun delphi veya sizde değilde  sql kurulumundaki  Server Collation  =  Turkish_CI_AS   ayarından

Cevap için çok teşekkür ederim.  Şimdi halletttim. varchar olan alanları nvarchara değiştirdim. Sorun kalmadı.

Allah razı olsun.