News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

MYSQL Türkçe Karakter Sorununa Kökten Çözüm [Karakter Değiştirme]

Started by temkick, April 30, 2007, 06:23:17 AM

Previous topic - Next topic

temkick

2 gün boyunca türkçe karakter sorununu çözemediğim için forumum kapalı kaldı...Googlenin altını üstüne getirdim burda arama yaptım ama hiç biri işine yaramadı..Sonunda aramalarım sonuç verdi ve bu tür sıkıntı yaşayan tüm arkadaşların işine yarayacak bir methot buldum..Anlatım tamamen alıntıdır ve hazırlayan arkadaştan Allah razı olsun...Yazıyı Dikkatle incelerseniz eminim sizin sorununuzda düzelecektir....


genelde host değiştirirken oluşan Türkçe karakter sorunları başa beladır. ne yapsan düzelmez adamın ömrünün yarısını alır götürür, gezmediğin web sitesi kalmaz herkes bişey söyler kiminin önerisi çözüm olur kimininki daha beter eder sen kabız olduğunla kalırsın.hele db yi notepad ile açıp Türkçe karakterleri bul/değiştir ile düzelt demezlermi onları görünce nevrim dönüyo. kardeşim db nin boyutu 200mb sınırını zorluyo onu notepad ile nereye açıyosun, bırak editlemeyi 40mb dan yüksek sql'i notepad ile açmayı bi deneyin bakalım açılıyomu. neyse biz konumuza dönelim bizim işimiz daha beter olanı yada hiç çözülemeyeni çözmek.
veritabanında Türkçe karakter sorunumu var? ne yaptıysan düzeltemedinmi? öyleyse diyeceklerimi yapmaktan başka şansın kalmadı demektir

çözüm

1- öncelikle HeidiSQL_3.0RC4_Setup isimli programı indirip kurucaksın. BURDAN İNDİREBİLİRSİNİZ

2- programını açıyosun. new ile bir isim sallayıp veri tabanı kullanıcı adınız ile şifrenizi yazıp veri tabanınıza ulaşıyorsunuz..( C-Panel Kullananlar MYSQL veri tabanı oluşturdukları bölümden kendi ip numaralarına bağlantı izni vermeleri gerekiyor )



3- şimdi işin gıcık kısmı geldi. programda sol kısımda yüklemiş olduğun veritabanları listelenir orda en son yüklediğin yedeği seçip ilk tablodan başlayarak son tabloya kadar içindekileri alanları sql sorgusu ile editlememiz gerek.
nasıl yaparız dersek mesela forum db sindeki attachment tablosunu editlemek ile başlayalım.



resimde 1 numara ile işaretlediğim yerdeki tabloların hepsini tek tek açıp içindekileri editliycez. bu tablonun içindekileri nerden görmek için önce 3 numaralı "data" sekmesini açıyoruz. ben data kısmında görünen attachment tablosunun "filename" alanını sql sorgusu ile editliycem. burda kullanacağımız sql sorgusu mantığı şuna benzer olucak

update [tabloadı] set [alanadı] = replace([alanadı],'[değiştirilmesi istenen bilgi]','[yerine konacak bilgi]');

5- şimdi data sekmesinin yan tarafındaki "Query" sekmesini açalım.
oraya yukardaki kod satırına göre editlemek istediğimiz tablo ve alan adlarını yazalım. kodları aşağıdaki gibi kullanırsanız belirtilen tablonun belirtilen alanındaki tüm veriler taranıp istenilen değişiklikler yapılır. biz attachment tablosundaki filename alanınındaki bozk karakterleri düzelticektik bunun için kullanacağımız kodlar aşağıdaki gibidir. bunları "query" sekmesine yazıyoruz.

UPDATE attachment SET filename = REPLACE (filename, 'þ', 'ş' ) WHERE filename LIKE '%þ%';
UPDATE attachment SET filename = REPLACE (filename, 'Ãz', 'Ş' ) WHERE filename LIKE '%Ãz%';
UPDATE attachment SET filename = REPLACE (filename, 'Ç', 'Ç' ) WHERE filename LIKE '%Ç%';
UPDATE attachment SET filename = REPLACE (filename, 'ç', 'ç' ) WHERE filename LIKE '%ç%';
UPDATE attachment SET filename = REPLACE (filename, 'Ã?', 'Ö' ) WHERE filename LIKE '%Ã?%';
UPDATE attachment SET filename = REPLACE (filename, 'Ö', 'Ö' ) WHERE filename LIKE '%Ö%';
UPDATE attachment SET filename = REPLACE (filename, 'ö', 'ö' ) WHERE filename LIKE '%ö%';
UPDATE attachment SET filename = REPLACE (filename, 'ü', 'ü' ) WHERE filename LIKE '%ü%';
UPDATE attachment SET filename = REPLACE (filename, 'ð', 'ğ' ) WHERE filename LIKE '%ð%';
UPDATE attachment SET filename = REPLACE (filename, 'ý', 'ı' ) WHERE filename LIKE '%ý%';
UPDATE attachment SET filename = REPLACE (filename, 'Ã�', 'İ' ) WHERE filename LIKE '%Ã�%';
UPDATE attachment SET filename = REPLACE (filename, 'Ãœ', 'Ü' ) WHERE filename LIKE '%Ãœ%';
UPDATE attachment SET filename = REPLACE (filename, 'Ä�', 'Ğ' ) WHERE filename LIKE '%Ä�%';




kodları yazdıktan sonra bu edit işlemini tüm karakterler için bir seferde yapmak üzere kod satırlarının hepsini seçip bir üst resimdeki ok ile gösterilen ikona tıklıyoruz ve işlemin bitmesini bekliyoruz.
program sql sorgusundaki değerlere göre bozuk karakterleri bulup bizim istediğimiz karakterler ile değiştiricek yani kısaca "bul/değiştir" işlemi yapıcak.
bu işlem bittikten sonra işimiz bittimi tabiki bitmedi. biz düzeltme işlemini sadece attachment tablosunun filename alanı için yaptık ama orda attachment tablosunda sedece filename alanı yok ki daha orda bir sürü alan var şimdi sql sorgumuzu dğer alanlara göre değiştirip düzeltme işlemini yapmamız gerek. mesela "filedata" alanını editliyceksek kullanıcağımız sql kodu şöle olucak

UPDATE attachment SET filendata = REPLACE (filedata, 'Ãœ', 'Ü' ) WHERE filedata LIKE '%Ãœ%';

diğer kodlarıda bu şekilde değiştirip filedata içindeki bozuk karakterleri düzeltebilirsiniz.
bu işlemleri tüm tablo ve içinlerindeki alanlar için yapmanız gerek.
vbulletin kullanıyorsanız 112 civarı tablo içlerindeki sayısız alan ile uğraşmak gözünüzü korkutabilir ama başka yolu yok malesef ki ben kendi veritabanımı bu yolla yarım saatte editlemiştim.
işleri hızlandırmak için bir tavsiye tablo içlerindeki her alanı editlemek zorunda değilsiniz sadece bozuk karakter olması muhtemel alanları editlemelisiniz.
mesela yukardaki resimlere bakın attachment tablosunda bozuk karakter olabilecek alanlardan biri filename alanıdır ama orda diğer userid,dataline,visible gibi alanlarda tr karakter sorunu yoktur. bu yüzden userid,dataline gibi alanları editlemek için vakit harcamaya gerek yok. bu şekilde sadece gerekli alanları editlerseniz işlemler daha çabuk biter.

editleme bittikten sonra geriye bir iş kalıyo o da localden veritabanı yedeğini alıp hostunuza yükleme.

kolay gelsin...

ALINTI...

Bende işe yaradı arkadaşlar..C-Panelden Kendi İP nize erişim izni vermeyi unutmayın..Pleskte nasıl olur bilmiyorum :D

renkliforum

plesk için bilgisi olan varsa lütfen bizimle paylaşsın. Program kilitlenip kalıyor. Ulaşamıyorum bir türlü

Gezgin-®

En güzel çözüm. Phpmyadminden geri yüklemek. Kesin vede tek çözüm. latin1, latin5. utf8 bir tanesini deneyeceksin.
EOkul.Gen.Tr // Eokul Bilgi Paylaşımı

temkick

Quote from: Gezgin-® on April 30, 2007, 06:05:39 PM
En güzel çözüm. Phpmyadminden geri yüklemek. Kesin vede tek çözüm. latin1, latin5. utf8 bir tanesini deneyeceksin.

Yurt Dışı lokasyonlu hostinglerde pek işe yaramıyor bu karakter seti seçimi...Ben 2 gün boyunca latinler dahil bütün karakter setleriyle denedim olmadı...En son bunu buldum nette ve yarım saatte 50 MB lık veri tabanımdaki bütün sorunlu karakterleri düzelttim...

KraL1

arkadaslar bende forumu tasiyinca tr karakterler ? seklinde cikiyor sadece aldigim yedekleri yeniden yükleyince oluyor
www.tatliruya.com
www.fenerbahce-cumhuriyeti.com
www.fenerbahcefm.org
www.turkiyesuperlig.net
www.tatlihost.com

asosweb

Arkadaşlar bunun kesin çözümü phpmyadminden yedeğinizi latin5 olarak yükleyeceksiniz daha sonrada settings.php nin en altına yani ?> bundan önce şu kod olması lazım
$db_character_set = '  '; bu kodda '  ' arasına latin5 yazıyorsunuz yani şu şekilde olacak
$db_character_set = 'latin5'; eğer bu kod satırı yoksa
?> bunun hemen önüne $db_character_set = 'latin5'; bu kod satırını ekleyin işlem tamamdır ancak muhakkak phpmyadmin ile atarken latin5 olarak atmanız gerekiyor.

Saygılarımla

özgür şahin

Boşverin böyle uzun şahşahalı işleri...

Açın settings.php'nizi,
Bul
?>

Hemen üzerine ekle :
$db_character_set = 'latin5';

Kolay gelsin.

husmen73 (Gulhin)

Programı kullanmaya bile gerek yok.

UPDATE attachment SET filename = REPLACE (filename, 'þ', 'ş' ) WHERE filename LIKE '%þ%';
UPDATE attachment SET filename = REPLACE (filename, 'Ãz', 'Ş' ) WHERE filename LIKE '%Ãz%';
UPDATE attachment SET filename = REPLACE (filename, 'Ç', 'Ç' ) WHERE filename LIKE '%Ç%';
UPDATE attachment SET filename = REPLACE (filename, 'ç', 'ç' ) WHERE filename LIKE '%ç%';
UPDATE attachment SET filename = REPLACE (filename, 'Ã?', 'Ö' ) WHERE filename LIKE '%Ã?%';
UPDATE attachment SET filename = REPLACE (filename, 'Ö', 'Ö' ) WHERE filename LIKE '%Ö%';
UPDATE attachment SET filename = REPLACE (filename, 'ö', 'ö' ) WHERE filename LIKE '%ö%';
UPDATE attachment SET filename = REPLACE (filename, 'ü', 'ü' ) WHERE filename LIKE '%ü%';
UPDATE attachment SET filename = REPLACE (filename, 'ð', 'ğ' ) WHERE filename LIKE '%ð%';
UPDATE attachment SET filename = REPLACE (filename, 'ý', 'ı' ) WHERE filename LIKE '%ý%';
UPDATE attachment SET filename = REPLACE (filename, 'Ãœ', 'Ü' ) WHERE filename LIKE '%Ãœ%';


bu kodları phpmyadminde ki sql sorgusu çalıştırma bölümünden yapabilirsiniz.

Bilgi: update [tabloadı] set [alanadı] = replace([alanadı],'[değiştirilmesi istenen bilgi]','[yerine konacak bilgi]');

Arkadaş bu bilgiyidfe bize vermiş. Kolayca hepsini yapabilirsiniz. Mesajlar için mesela şu kodları yapmalısınız;

update smf_messages set body = replace(body,'ı','i');      [Bu kod ile ı harfini i 'ye dönüştürdüm.]
-Kurumsal Kimlik Web Tasarım Hizmeti.
Gülhin Portal Sistemi hakkında yorumlarınızı bekliyorum.
SMF
Referanslar --> http://www.gulhin.com/referanslar-portfoy/
-Web Tasarımı ve Tema Tasarımı Sitesi www.gulhin.com
-TOPLU MAİL GÖNDERİMİ --> http://www.toplumailsms.com
E-Ticaret Sistemi yaptırmak mı istiyorsunuz?

Arbalot

yanlız söyle bir durumda vardır ki bilgiler veritabanına utf8 olduğunda ş şeklinde kaydedilir
diğer kodlamalarda farklı biçimde kaydedilir...

di_jean

arkadaşlar aynı sorun bendede var yedek db yi yeni host a attığımda  sapıtıyo yedeği mi  düzgün atamıyoz acaba ya :S

suleyman_eren

Quote from: osahin on June 18, 2007, 08:02:26 PM
Boşverin böyle uzun şahşahalı işleri...

Açın settings.php'nizi,
Bul
?>

Hemen üzerine ekle :
$db_character_set = 'latin5';

Kolay gelsin.


2: Compilation failed: invalid UTF-8 string at offset 39
Dosya: /var/www/vhosts/imamhatipliyiz.biz/httpdocs/forum/Sources/Subs.php
Satır: 2435

sancars

Ben forumu sıfır kurdum... sıfır forumu türkçe kurduğum halde TR karakter sorunu yaşıyorum !!

www.kepsut.org bakabilirseniz sevinirim...

HELP MEEE !!

husmen73 (Gulhin)

Quote from: sancars on July 15, 2007, 05:19:42 PM
HELP MEEE !!
Help me ne demek? Forum kurallarına lütfen uyunuz. Sitenizde herhangi bir sorun göremedim.

Bu arada bende kepsutluyum :)
-Kurumsal Kimlik Web Tasarım Hizmeti.
Gülhin Portal Sistemi hakkında yorumlarınızı bekliyorum.
SMF
Referanslar --> http://www.gulhin.com/referanslar-portfoy/
-Web Tasarımı ve Tema Tasarımı Sitesi www.gulhin.com
-TOPLU MAİL GÖNDERİMİ --> http://www.toplumailsms.com
E-Ticaret Sistemi yaptırmak mı istiyorsunuz?

sancars

QuoteHelp me ne demek? Forum kurallarına lütfen uyunuz. Sitenizde herhangi bir sorun göremedim.

Bu arada bende kepsutluyum :)

MSN : [email protected]    tanışmak isterim...

sorunu giderdim Teşekkürler

edecan

Valla helal olsun arkadaş uzun uzun anlatacağına kısa yolu varmış
Ama kardeş yinede emeğine sağlık
herkesin emeğine sağlık
Herkesi www.raptayiz.biz ' e Bekleriz

pspturkey

Ben husmen arkadaşın söylediğini yaptım ama sonuç alamadım. phpmyadminde şöyle bir hata var:

SQL sorgusu:

UPDATE attachment SET filename = REPLACE( filename, 'Ãœ', 'Ü' ) WHERE filename LIKE '%Ãœ%'

MySQL çıktısı: 

#1146 - Table 'psptynet_abc.attachment' doesn't exist

Türkçe PSP Kaynağı: www.pspturkey.net
Türkçe Konsol Kaynağı: www.konsolum.net
Türkçe Oyun Hileleri Kaynağı: www.hiletr.net

husmen73 (Gulhin)

Quote from: pspturkey on July 28, 2007, 11:20:25 AM
Ben husmen arkadaşın söylediğini yaptım ama sonuç alamadım. phpmyadminde şöyle bir hata var:

SQL sorgusu:

UPDATE attachment SET filename = REPLACE( filename, 'Ãœ', 'Ü' ) WHERE filename LIKE '%Ãœ%'

MySQL çıktısı: 

#1146 - Table 'psptynet_abc.attachment' doesn't exist


attachment tablosunun olmadığını söylüyor. Önce veritabanınıza tıklayın ve tablolar listelensin, öyle sorguyu çalıştırın.
-Kurumsal Kimlik Web Tasarım Hizmeti.
Gülhin Portal Sistemi hakkında yorumlarınızı bekliyorum.
SMF
Referanslar --> http://www.gulhin.com/referanslar-portfoy/
-Web Tasarımı ve Tema Tasarımı Sitesi www.gulhin.com
-TOPLU MAİL GÖNDERİMİ --> http://www.toplumailsms.com
E-Ticaret Sistemi yaptırmak mı istiyorsunuz?

fabianevam

Quote from: husmen73 on June 19, 2007, 02:56:56 AM
Programı kullanmaya bile gerek yok.

UPDATE attachment SET filename = REPLACE (filename, 'þ', 'ş' ) WHERE filename LIKE '%þ%';
UPDATE attachment SET filename = REPLACE (filename, 'Ãz', 'Ş' ) WHERE filename LIKE '%Ãz%';
UPDATE attachment SET filename = REPLACE (filename, 'Ç', 'Ç' ) WHERE filename LIKE '%Ç%';
UPDATE attachment SET filename = REPLACE (filename, 'ç', 'ç' ) WHERE filename LIKE '%ç%';
UPDATE attachment SET filename = REPLACE (filename, 'Ã?', 'Ö' ) WHERE filename LIKE '%Ã?%';
UPDATE attachment SET filename = REPLACE (filename, 'Ö', 'Ö' ) WHERE filename LIKE '%Ö%';
UPDATE attachment SET filename = REPLACE (filename, 'ö', 'ö' ) WHERE filename LIKE '%ö%';
UPDATE attachment SET filename = REPLACE (filename, 'ü', 'ü' ) WHERE filename LIKE '%ü%';
UPDATE attachment SET filename = REPLACE (filename, 'ð', 'ğ' ) WHERE filename LIKE '%ð%';
UPDATE attachment SET filename = REPLACE (filename, 'ý', 'ı' ) WHERE filename LIKE '%ý%';
UPDATE attachment SET filename = REPLACE (filename, 'Ãœ', 'Ü' ) WHERE filename LIKE '%Ãœ%';


bu kodları phpmyadminde ki sql sorgusu çalıştırma bölümünden yapabilirsiniz.

Bilgi: update [tabloadı] set [alanadı] = replace([alanadı],'[değiştirilmesi istenen bilgi]','[yerine konacak bilgi]');

Arkadaş bu bilgiyidfe bize vermiş. Kolayca hepsini yapabilirsiniz. Mesajlar için mesela şu kodları yapmalısınız;

update smf_messages set body = replace(body,'ı','i');      [Bu kod ile ı harfini i 'ye dönüştürdüm.]

kardeş ben anlamadığım için yapamadım size kolay gelebilir resimli kolay bir anlatım yaparsanız çok sevinirim

husmen73 (Gulhin)

-Kurumsal Kimlik Web Tasarım Hizmeti.
Gülhin Portal Sistemi hakkında yorumlarınızı bekliyorum.
SMF
Referanslar --> http://www.gulhin.com/referanslar-portfoy/
-Web Tasarımı ve Tema Tasarımı Sitesi www.gulhin.com
-TOPLU MAİL GÖNDERİMİ --> http://www.toplumailsms.com
E-Ticaret Sistemi yaptırmak mı istiyorsunuz?

ISIL

Forumun Admin penlinden DB lerinizin yedeklerini alın bence sorun yaşamayacaksınız.

Advertisement: