in Eski Blog Yazılarım

FreeTDS’de Türkçe Karakter Problemi

Perl’ile Qmail’in loglarını parse edip mssql veritabanına giren bir
script yazdım. Scripti yazarken perl ile mssql’e bağlanmak için FreeTDS‘i
kullandım. Logdosyasının ansi olması ve içinde egzantirik karakterler
barındırması sonucu provider sürekli aşağıdaki hatayı veriyordu.

Some character(s) could not be converted into client's character set

Bunun üzerine /usr/local/freetds/etc/freetds.conf dizinindeki dosyayı aşağıdaki şekilde değiştirdim.

[SQLSERVERIM]
host = 192.168.01
port = 1433
tds version = 8.0
client charset = ISO-8859-9

freedts.conf ile ilgili detaylı bilgiyi http://www.freetds.org/userguide/freetdsconf.htm adresinden edinebilirsiniz.

Bu
düzenlemeyi yaptıktan sonra Türkçe karakterlerin girilmesinde herhangi
bir problem yaşamadan saniyede 2000 satır insert yapabildim.

Bundan
sonra tüm dosyayının parse etmesini beklerken aynı hatalar tekrar peyda
oldu. Bu sefer "`Fatmagül_Ipekçi_" gibi karakterlerden problem
oluyordu. Aklıma perl’ün Text::Iconv modülü geldi fakat bunun performansı pek tatmin etmedi. Birde sh komutunu denedim Iconv fakat çok kötü bir fikir olduğunu anlamam uzun sürmedi. Bende abuksubuk karakterleri temizleyen aşağıdaki fonksiyonu yazdım.

                sub Temizle
{
($konu) = @_;
$konu =~ s/[^a-zA-Z^0-9süÜşŞöÖçÇİığĞ@-_,"']//g;
return $konu;
}

Bu şekilde bir regex deseni yazınca performansda fazla bir etki yapmadan abuk karakterleri eledim.

Birde pek bir alakası yok ama .net için güzel ve ücretsiz bir obfuscator tavsiye edebilirim ismi Eazfuscator.NET, link!

Unutmadan Togi oyuncağımı tamir ettim artık daha fazla thread-safe ve daha az buggy: http://www.oguzhan.info/togi

Kara Kule serisinin 6. kitabını (Susannah’ın Şarkısı) bitirdim, serinin son kitabını da okuyup artık merakımı gidermek istiyorum…

Odamdaki bilgisayar masamın yerini değiştirdim çok güzel oldu kendimi iyi hissettim…

Samsung veya Sony marka dijital kamera araştırıyorum HD kayıt yapabilen bir model olmasını istiyorum tavsiyelere açığım…

Kamera demişken bellekmarket.com‘a 16GB, 8GB, 4GB kapasitelerinde SDHC (Secure Digital Hight Capacity) dijital medyalar geldi almak isteyenlere duyurulur.

Yorum Bırak

Comment