Cevaplara yorum özelliği eklendi. Lütfen tartışmalar için yorumları kullanın. Tüm güncellemeler

Codeigniter Arapça Karakterlerin ? Karakterlerine Dönmesi Sorunu

Codeigniter 3 kullanıyorum. MSSQL veritabanına Türkçe, İngilizce ve Arapça veriler kaydetmeye çalışıyorum.

Normalde veritabanı Arapça karakterleri kabul ediyor ama Codeigniter ile kaydetmeye çalıştığım zaman tüm Arapça karakterler ? karakterlerine dönüşüyor.

$this->db->update(
    'Table1', 
    array('column1'=>'اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية'), 
    array('Id=>$id)
);

Veritabanına kaydolduğunda ??????????????????????????????????? haline dönüşüyor.


Bu veriyi direkt veritabanına yazıp kaydettiğimdeyse düzgün şekilde kaydoluyor.

Yani codeigniter bu karakterleri ? karakterlerine çeviriyor.


database.php ayarlarım şöyle:

$db['default'] = array(
   'dsn'  => 'sqlsrv:server=<Sunucu IP Adresi>;Database=<Veritabanı Adı>;',
   'hostname' => '<Sunucu IP Adresi>',
   'username' => '<Kullanıcı Adı>',
   'password' => '<Şifre>',
   'database' => '<Veritabanı Adı>',
   'dbdriver' => 'pdo',
   'dbprefix' => '',
   'pconnect' => FALSE,
   'db_debug' => (ENVIRONMENT !== 'production'),
   'cache_on' => FALSE,
   'cachedir' => '',
   'char_set' => 'utf8',
   'dbcollat' => 'utf8_unicode_ci',
   'swap_pre' => '',
   'encrypt' => FALSE,
   'compress' => FALSE,
   'stricton' => FALSE,
   'failover' => array(),
   'save_queries' => TRUE
);


Bunu nasıl önleyebilirim?

1

Cevaplar (1)

İşlem devam ediyor, lütfen bekleyin..
Sedat BAŞ
Doğru Cevap
@idvlprs
1 ay önce

https://forum.codeigniter.com/archive/index.php?thread-43732.html

Cevapla @ebykdrms1 ay önce
Teşekkür ederim @idvlprs. Burada database.php ayarlarında zaten yaptığım bazı ayarları yapmam gerektiğinden bahsediyor.

Sorunu çözdüm. Update işlemini direkt sorgu ile yazmam gerekti. Şöyle:

// Açık vermemek için normalde dışarıdan aldığım Arapça veriyi temizliyorum.
$data = $this->db->escape_str('اأآؤءئبتثجحخدذرزسشـصضطظعغفقكلمنهوية');

// Id verisi de eğer sayısal olarak gelmemişse diye onu da çeviriyorum.
$id = (int)$id;

$this->db->query("UPDATE Table1 SET Column1=N'$data' WHERE Id=$id");

db->update() ile işlemi yaptığımda Column1='...' şeklinde sorgu üretiliyor.

Ben direkt sorgu yazdığımda N ifadesini de ekleyebildim ve Column1=N'...' elde ettim.

Sorguyu buna göre gönderdiğimde işlem çalıştı. Demek ki sorun codeigniter'dan değil veritabanından kaynaklanıyormuş. Ama codeigniter ile bu string başına N ekleme işlemini nasıl yapabilirdim bilmiyorum.

Bilenler yorum atarsa bilgileniriz. :)
Cevapla @ebykdrms1 ay önce
Bu sorun sanırım MySql için oluşmuyor. MsSql'le çalıştığım için böyle bir sorun yaşadım zannedersem...
İşlem devam ediyor, lütfen bekleyin..

Cevap yaz Sadece sorunun cevabını yazın