İçeriğin rss beslemesi kullanımda değil Soru - Cevap Bölümü / Kategori: Programlama

04/03/2005 - 08:09:18 cevap (16) Okunma : 20462 Bu yazıyı 0 kişi tuttu.

db-türkçe sorunu

Merhaba, Problemi açıklamadan önce bir noktayı açıklığa kavuşturmak sanırım yerinde olacaktır. Hazırladığım site için CF MX 6.1 destekli web barındırma hizmeti sunan firmalar için bir sürü arama yaptım. Türkçe içerikli sitelerde hem fiyatlar çok yüksek olduğunu, sunulan hizmetin kapsamı dar hem de cf mx 6.1 desteğinin olmadığını gördüm. (Ya da öyle algıladım çünkü hiç birinde cf mx 6.1 ifadesini görmedim. Çoğunda cf mx ifadesi geçiyordu ve belki de üşendiğimden sorma ihtiyacı hissetmedim.) Bu durumda hosMySite diye bir yerden alan kiraladım. Hizmetler mükemmel. Ancak sitedeki forumu denemek istediğimde türkçe karakterlerin bozulduğunu gördüm. Örneğin kaydettiğim abadanoğlu kelimesi abadano_lu şeklinde görüntüleniyor.

Bunun olmaması gerekiyordu çünkü benim makinamde her şey normaldi. Sitenin destek bölümüne derdimi maille anlattığımda, güvenlik ve performans bakımından böyle bir desteği vermelerinin mümkün olmadığını söylediler.

Şimdi anlamadığım ms access with unicode support formatında oluşturduğum dosya sunucuya konduğunda değişikliğe mi uğruyor? Ya da bu dosya eklenirken sadece ms access şeklinde mi ekleniyor?

Sunucunun ms access with unicode support şeklindeki dosyaları barındırması gerçekten güvenlik ve performansı etkiliyor mu? Ve bu durumda ne yapmam gerekiyor? Yani insanlar yazdıklarını okuyamayacaklarsa forumun hiç bir anlamı kalmıyor.

http://www.bd-ee.net (Siteyi yayınlasam da henüz tasarım aşaması devam ediyor. Şayet inceleme fırsatınız olursa görüş ve öneri ve eleştirilerinizi iletmenizden mutluluk duyacağımı belirtmek isterim.)

 1 2 »  son »
adres metoikos profilini göster
Yılmaz Uğurlu 04.03.2005 22:41:47
En iyi cevap mı ?

<cfprocessingdirective pageencoding="utf-8"> türkçe karakter sorununu halletmen için gerekli olan etiket. bütün sayflarında bunu kullan. ayrıca APPLICATION.cfm sayfasında

<cfprocessingdirective pageencoding='utf-8'>
<cfscript>
      SetEncoding('form','utf-8');
      SetEncoding('url','utf-8');
</cfscript>

şeklinde bir tanımlada yaparsan bunlar sorununu çözer diye düşünüyorum. Bu arada siten görüntülenmiyor. başka sorunların olursa seve seve yardım ederiz.

adres imaginer profilini göster
imaginer 05.03.2005 05:35:36
En iyi cevap mı ?

merhaba, sanırım site için link verirken [url] etiketini bir şekilde silmişim. düzenledim, link çalışıyor şimdi.

cevabın için çok teşekkür ederim meteikos. gönderdiğin kodların işe yarayacağından eminim. şimdiye kadar hep öyle oldu çünkü. çalışmalarında başarılar diliyorum.

adres imaginer profilini göster
imaginer 05.03.2005 07:41:40
En iyi cevap mı ?

merhaba, Meteikos’un önerisi doÄŸrultusunda gerekli kodları ekledim. Ancak yine de söz konusu forumda Türkçe karakterler görüntülenmiyor. Sanırım söyledikleri gibi sunucu ile alakalı bir durum bu. Åžayet deÄŸilse de problemin çözümüne iliÅŸkin önerileri almaktan mutluluk duyarım.

adres mdemirci01 profilini göster
Murat Demirci 13.03.2005 06:09:49
En iyi cevap mı ?

cfprocessingdirective etiketi ile veritabanı Türkçe karakter sorunu arasında bir bağlantı olmasa gerek, çünkü bu etiket sadece o .cfm dosyasının hangi encoding ile kaydedildiğini ifade eder. ColdFusion bu etiketi sadece dosyayı okuyup hafızaya aktarırken kullanır.

Veritabanına kaydederken veya okurken yaÅŸadığınız Türkçe sorunu eÄŸer Access kullanıyorsanız %90 kullandığınız driver’ın Access with Unicode OLMAMASINDAN kaynaklanıyordur. DiÄŸer bir ihtimal de veritabanını hazırlarken kullandığınız Access olabilir. Veritabanını Access 2002 ve sonrası (mümkünse MS Access 2003 ile) hazırlamanızı ve metin alanlarda unicode sıkıştırmasının etkinleÅŸtirilmiÅŸ olduÄŸundan emin olmanızı tavsiye ederim.

Son bir (zayıf) ihtimal: Sunucuda yüklü olan MDAC (Microsoft Data Access Components) de Türkçe karakterleri etkileyebilir (emin deÄŸilim). MDAC’in ingilizce ve Türkçe sürümleri bulunmaktadır. Yukarıdaki fikirler yardımcı olmazsa bir de bu MDAC’a bakabilirsiniz.

adres metoikos profilini göster
Yılmaz Uğurlu 14.03.2005 23:38:52
En iyi cevap mı ?

faydalı bilgileriniz için teşekkürler, bilgi eksikliğimizi gidermemize yardımcı oldu.

adres imaginer profilini göster
imaginer 15.03.2005 16:54:00
En iyi cevap mı ?

teşekkürler.

adres koroglu profilini göster
koroglu 22.05.2005 07:01:13
En iyi cevap mı ?

Merhaba arkadaslar.Suanda bir site üzerinde calisiyorum, sitenin db si acces 2000 ile yapilmis.Bu sitedeki Türkce karekter problemini cözmek icin bütün cf sayfalarin en üstüne su kodu yazdim

&lt;cfprocessingDirective&gt; ve application.cfm icine ise;
&lt;cfscript&gt;
      SetEncoding&#40;'form','utf-8'&#41;;
      SetEncoding&#40;'url','utf-8'&#41;;
&lt;/cfscript&gt;

&lt;cfcontent&gt;

Meta tag icine ise

META http-equiv='Content-Type' 
content='text/html; 
charset=utf-8'&gt; 

olarak yazdim.Simdi kodlarin icindeki türkce karekter problemi yok ancak acces ten okunan yazilarda problem var yani türkce karekter kullanamiyorum.Acces unicode olarak tanittigim zaman formu kullanarak hesap acmak istendiginde I

NSERT INTO syntax error 

hatasini veriyor.Ancak acces si unicode olarak tanitmadigim zaman gayet güzel calisiyor.Acaba bu sorunu nasil cöze bilirim.Yardimci olacak arkadaslara simdiden tesekkürler

adres mdemirci01 profilini göster
Murat Demirci 22.05.2005 20:43:43
En iyi cevap mı ?
&lt;cfprocessingdirective&gt;

etiketini dosyanın hangi encoding ile kaydedildiÄŸini ColdFusion’a belirtmek için kullanıyoruz.

setEncoding’i Form ve URL deÄŸiÅŸken deÄŸerlerinin encoding’ini ayarlamak için kullanıyoruz. Burada kullandığımız deÄŸer &lt;cfcontent&gt; ile belirttiÄŸimiz HTML çıktı encodingiyle aynı olursa daha saÄŸlıklı olur.

&lt;cfcontent&gt;

ile tarayıcıya gönderilecek olan HTML çıktının encodingini ayarlayabiliyoruz.

&lt;meta&gt; etiketi ile tarayıcıya HTML’in hangi encodingi kullandığını belitiyoruz. Burada kullandığımız deÄŸer &lt;cfcontent&gt; ile aynı olmalıdır.

Fakat yukarıdaki tüm ayarlamalar aslında opsiyoneldir. Aslında ColdFusion biz yukarıdaki ayarları yapmazsak bile varsayılan olarak UTF-8 kullanır. Fakat yukarıdaki ayarları yapmadığınızda sizin sayfalarda türkçe karakterlerle ilgili bazı sorunlar oluyorsa veya tarayıcada görüntülenen sayfanın ilk satırında tuhaf birkaç karakter görüntüleniyorsa, veya tarayıcıda hiç bir ÅŸey görünmüyorsa bu durum Dreamweaver’daki sayfa encoding ayarıyla ve tarayıcının encoding ayarıyla ilgili olabilir. Buraya kadar ki yazdıklarım veritabanı sorunundan ayrı bir konu, yani bu ayarlar veritabanıyla ilgili oluÅŸan Türkçe karakter sorununu doÄŸrudan ilgilendirmiyor…

Bu genel bilgilerden sonra asıl sorunun çözümüne gelelim:

Sayfa doğru görüntüleniyor olduğu halde sadece veritabanından okunan metinlerde veya veritabanına kaydedilen metinlerde sorun oluyorsa öncelikle Access 2002 veya daha yeni bir sürüm kullanmaya çalışın. Ve metin (yani

CHAR ve TEXT

tipindeki alanlar) alanlarda Unicode sıkıştırmasının etkinleştirildiğinden emin olun (varsayılan olarak etkindir) (bunun için bkz: Tablo tasarım görünümünde metin alan seçiliyken aşağıda görüntülenen alan özellikleri)

Ayrıca mutlaka ama mutlaka Access with Unicode driver’ını kullanın diÄŸer Access driver’ında Türkçe karakter sorunu var.

Access with Unicode kullanıldığında INSERT INTO gibi SQL’lerde syntax error gibi hatalar veriyorsa muhtemel neden gerçekten de bir yazım hatası olabilir. O yüzden SQL’de bir yazım hatası olmadığından emin olmalıyız. ilk önce ÅŸunlara dikkat etmeliyiz:

1- Access’te tablo ve alan isimlerini verirken Türkçe karakter, boÅŸluk vb. özel karakter kullanmamalıyız.

2- EÄŸer tablo ve alan isimlerini büyük harflerle yazdıysak SQL’de de bu isimleri büyük harflerle kullanmalıyız. Bir baÅŸka deÄŸiÅŸle Access’te tablo ve alan isimlerini nasıl yazdıysak SQL’lerde de tamamen aynı ÅŸekilde büyük-küçük harfleri bile aynı olacak ÅŸekilde kullanmalıyız. ÖrneÄŸin Access’te Musteri diye bir tablomuz olduÄŸunu varsayalım. SQL’de insert into Musteri … olarak kullanmalıyız. SQL’de insert into MUSTERI demiÅŸsek hata oluÅŸabilir.

EÄŸer buraya kadar yazdıklarımla sorun çözülmediyse SQL’i bu foruma gönderirseniz inceleyebilir ve daha fazla yardımcı olabilirim.

Not:

'insert into'

ifadesi SQL’e ait olan bir ifadedir o nedenle sadece SQL’e ait olan select, update, set, is, null, from, where, delete, insert, into, order, group, having, by, distinct gibi kelimelerde büyük küçük harf duyarlılığı yoktur, bunlar haricindekilerde Access veritabanı kullanıyorsanız büyük-küçük harflere dikkat etmenizde yarar var.

adres koroglu profilini göster
koroglu 23.05.2005 19:01:52
En iyi cevap mı ?

Problemi sanirim bir daha aciklamakta yarar var.

Acces unicode olarak tanimlandigi zaman INSERT INTO SYNTAX ERROR hatasi veriyor.(acces unicode tanimlanmadigi zaman her hangi bir problem yok).Acces e kaydedilen yazilar browserde normal görunuyor.ancak söz konusu hatayi vermektedir.Accesi kontrol ettim ama sizin belirttiginiz hatali yazim söz konusu degil.Söz konusu kodlari asagida yaziyorum


&lt;cfif&gt;
  &lt;font&gt;Error&#58; The password and confirmation password box do not 
  match. Please &lt;a&gt;click here&lt;/a&gt; to start the checkout 
  process again, or hit your browsers back button to go back and enter the password 
  again.&lt;/font&gt; 
  &lt;cfabort&gt;
&lt;/cfif&gt;


&lt;cfquery&gt;
SELECT * FROM customerhistory
WHERE EmailAddress = '#form.EmailAddress#'
&lt;/cfquery&gt;

&lt;cfif&gt;
    &lt;If&gt;
    &lt;CFQUERY&gt;
    INSERT INTO customerhistory
    &#40;EmailAddress, Password&#41;
    VALUES
    &#40;'#form.EmailAddress#', '#form.Password#'&#41;
    &lt;/cfquery&gt;

        &lt;cfoutput&gt;
            &lt;cfset&gt;
            &lt;cfset&gt;
        &lt;/cfoutput&gt;
&lt;/cfif&gt;

&lt;cfif&gt;
         &lt;cflocation&gt;   
&lt;/cfif&gt;


&lt;cfquery&gt;
SELECT * FROM customerhistory
WHERE EmailAddress = '#form.EmailAddress#'
&lt;/cfquery&gt;

&lt;cfoutput&gt;
&lt;cfset&gt;
&lt;/cfoutput&gt;

&lt;cfoutput&gt;
&lt;CFCOOKIE&gt;
&lt;CFCOOKIE&gt;
&lt;/cfoutput&gt;

————_—————— Simdiden tesekkür ederim

adres mdemirci01 profilini göster
Murat Demirci 23.05.2005 20:45:30
En iyi cevap mı ?

Gönderdiğiniz koda uygun bir veritabanı oluşturup Access with Unicode ile test ettim. Ben de aynı hata oluştu: "Syntax error in INSERT INTO statement."

http://support.microsoft.com adresinde ingilizce hata mesajını aratıp sorunun kaynağını buldum.

Bu hata reserved word (ayrılmış kelime) kullanımından kaynaklanıyormuÅŸ. Password kelimesi reserved olabilir diye bu alanın adını Sifre olarak deÄŸiÅŸtirdim. Bu deÄŸiÅŸikliÄŸi hem veritabanında hem de INSERT INTO sql’inde yaptım, form alanlarını deÄŸiÅŸtirmedim.

Evet password alanın adını değiştirince sorun düzeldi.

Ayrıca elim değişmişken göndermiş olduğunuz kodu biraz düzenledim. Her iki kodu satır satır kıyaslayarak önceki koddaki yanlışlıkları görebilirsiniz:

&lt;cfif NOT form.Password IS form.ConfirmPassword&gt;
  &lt;font color='#FF0000'&gt;Error&#58; The password and confirmation password box do not match. Please &lt;a href = 'index.cfm'&gt;click here&lt;/a&gt; to start the checkout process again, or hit your browsers back button to go back and enter the password again.&lt;/font&gt;
  &lt;cfabort&gt;
&lt;/cfif&gt;

&lt;cfquery name='CheckDuplicate' datasource='#request.dsn#'&gt;
    SELECT * FROM customerhistory
    WHERE EmailAddress = &lt;cfqueryparam cfsqltype='cf_sql_varchar' value='#form.EmailAddress#' /&gt;
&lt;/cfquery&gt;

&lt;cfif CheckDuplicate.RecordCount IS 0&gt;
  &lt;!---If NOT a duplicate then insert the new email address and password into the database---&gt;
  &lt;cfquery name = 'AddACustomer' datasource = '#request.dsn#'&gt;
  INSERT INTO customerhistory &#40;
    EmailAddress,
    Sifre
  &#41; VALUES &#40;
     &lt;cfqueryparam cfsqltype='cf_sql_varchar' value='#form.EmailAddress#' /&gt;,
     &lt;cfqueryparam cfsqltype='cf_sql_varchar' value='#form.Password#' /&gt;
  &#41;
  &lt;/cfquery&gt;

  &lt;cfset CustEmailAddress = form.EmailAddress&gt;
  &lt;cfset CustPassword = form.Password&gt;
&lt;/cfif&gt;

&lt;cfif NOT CheckDuplicate.RecordCount IS 0&gt;
  &lt;cflocation url='index.cfm?errorcode=EmailInUse'&gt;
&lt;/cfif&gt;

&lt;cfquery name = 'GetCustomerID' Datasource = '#Request.dsn#'&gt;
  SELECT * FROM customerhistory
  WHERE EmailAddress = &lt;cfqueryparam cfsqltype='cf_sql_varchar' value='#form.EmailAddress#' /&gt;
&lt;/cfquery&gt;

&lt;cfloop query = 'GetCustomerID'&gt;
  &lt;cfset Cart.CustomerID = GetCustomerID.CustomerID&gt;
&lt;/cfloop&gt;

&lt;cfcookie name='CustEmail' expires='1' value='#Form.EmailAddress#'&gt;
&lt;cfcookie name='CustPassword' expires='1' value='#Form.Password#'&gt;

Bazı gereksiz # işaretleri, &lt;cfoutput&gt; etiketleri vardı onları kaldırdım. Ayrıca güvenliliği, kararlılığı ve performansı artırmak için SQL içerisinde &lt;cfqueryparam&gt; etiketlerini kullandım.

iyi çalışmalar,

adres koroglu profilini göster
koroglu 27.05.2005 05:57:04
En iyi cevap mı ?

Merhaba , Sizin belirttiginiz gibi db gerekli düzenlemeyi yaptim yani Password yerine Sifre yazdim ve yazdiginiz kodu aynen sayfaya yarlestirdim.Ancak baska bir hata vermektedir.Hatanin ciktisi

'Error Executing Database Query. The INSERT INTO instruction contains the following unknown field name&#58; 'Sifre'. Make sure that you have properly given the name, and explain then the operation again. '

Acaba hata nerededir yada gözümden kacan nedir. Simdiden tesekkürler

adres mdemirci01 profilini göster
Murat Demirci 27.05.2005 16:33:56
En iyi cevap mı ?

Bu hata mesajından anladığım kadarıyla veritabanındaki alanın adı Sifre değil. Veritabanındaki customerhistory tablosunu design yani tasarım görünümünde açıp alanın adını tekrar kontrol etmenizde yarar var.

Bir de doÄŸru veritabanını (yani .mdb uzantılı dosyayı) deÄŸiÅŸtirdiÄŸinizden emin olmalısınız. Ayrıca mümkünse bilgisayarı bir kapatıp açmayı da deneyebilirsiniz (Veritabanı driver’ı tablo yapısını keÅŸlemiÅŸ olabilir).

adres imaginer profilini göster
imaginer 11.06.2005 09:44:07
En iyi cevap mı ?

merhaba, arkadaÅŸlar türkçe karakter sorununa hala çözüm bulamadım. Önerilen her yolu denedim ama olmadı bir türlü. Localde veritabanın kaydettiÄŸim (access 2003)türkçe karakterler düzgün görürken siteyi upload ettiÄŸimde farklı gözüküyor. (ÖrneÄŸin "ı" harfi "i"; "ÅŸ" harfi "s" ÅŸeklinde) Bir de siteyi yayınladıktan sonra girdiÄŸim türkçe karakterler tamamen farklı kaydediliyor. ("ÅŸ" harfi "_" ÅŸeklinde…)

Bu sorunla baş etmiş arkadaşlardan birisi benim için örnek bir sayfa tasarlayabilir mi acaba?

bir url’den bir de form alanından bir access dosyasına basit bir kayıt örneÄŸi.

adres imaginer profilini göster
imaginer 17.06.2005 07:51:32
En iyi cevap mı ?

merhaba,

öncelikle sizleree karşı mahcub olduğumu belirtmem gerekiyor. problem halloldu ve problemin çözümü o kadar basit oldu ki bir an suçlu gibi hissettim kendimi.

Ancak şunu herkes biliyor ki değişik karakter setlerinin görüntülenebilmesi için (access dosyaları için) access with unicode support driverının yüklü olması gerekiyor. ilgili firmanın adresi www.hostmysite.com ve ben problemle ilgili kaç kez yazıştım. Site admin arayüzünden db dosyasını eklerken söz konusu driver yüklü olmadığı halde bana bu konuda önerilerde bulunmaktan, problemin çözümü için başka başka adresler vermekten başka bir şey yapmadılar. Yani olay öyle gelişti ki bu driverın kullanılmamış olması ihtimali aklıma bile gelmedi.

bir forumda bir arkadaşın uyarasıyla ilgililerle tekrar yazıştım ve bu driverın yüklü olmadığını söylediler. Sonra da problemi hallettiler tabi. Yaklaşık üç aydır da gereksiz yere bir sürü insanı rahatsız ettim bu konuda. herkesten özür diliyorum.

ilgilenen arkadaÅŸlara ise sonsuz teÅŸekkürler…

Bu problemi halledince kalan işlerle uğraşmaya başladım ve bu defa da cfmail etiketinin çerçevelediği türkçe karakterlerde sorun oluştuğunu gördüm. Bunun sebebi ne olabilir acaba? :oops:

adres imaginer profilini göster
imaginer 12.03.2006 19:07:14
En iyi cevap mı ?

Uzunca bir aradan sonra tekrar merhaba,

Şimdilerde veritabanı olarak mysql ile çalışmaya başladımsa da hosting açısından ücretli olması nedeniyle bazen ms access kullanmak durumunda kalıyorum.

hosting konusunda da hizmet kalitesi nedeniyle www.hostmysite.com dan ayrılmak istemiyorum. Ancak bir problem var ki o da access kullanırken hep Türkçe karekter problemi yaşıyor olmam. Bir ara problemi çözdüler ancak aynı problem tekrarlandı.

Sorum şu: Coldfusion Administratordan veritabanının msaccess with unicode değil de ms access seçilmesi durumunda sayfa içerisinden unicode driverını kullandıracak bir kod yazmamız mü acaba?

Yani anladığım kadarıyla, ben onlara veritabanını ms access with unicode şeklinde eklemelerini söylediğimde (kendilerince birtakım ndenelerden dolayı) veritabanını ms access with unicode ile değil de ms access şeklinde ekliyorlar. Kontrol panelinden kendim eklediğimde de yine söz konusu driver kullanılmayacak şekilde ekleniyor.

işte bu driverı kullanmak için sayfa içerisinden bir şeyler yapmak mümkün mü acaba?

 1 2 »  son »

aç-kapa Bu Yazıyı Tutanlar

bu yazıyı tutan kimse yok.

yeni üyelik | şifremi unuttum

aç-kapa Yarışma Fikir10000 Dijital Pazarlama Fikir Yarışması

Fikir10000 Dijital Pazarlama Fikir Yarışması

ADTECH tarafından düzenlenen Fikir10000 yarışmasına; dijital pazarlama ile ilgili size ait olan fikrinizle katılabilir ve 10.000 YTL’lik birinci...
Kategori: Yarışma

aç-kapa Toplantı Kahraman ve need4code.com Projesi Connect Toplantısı

Kahraman ve need4code.com Projesi Connect Toplantısı

Selam arkadaslar, Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 16Aralı...
Kategori: Toplantı

aç-kapa Yarışma 7Dx Demoscene Party

7Dx Demoscene Party

2002 yılından beri amatör bilgisayar kültürü ile ilgilenen insanları bir araya getirmeyi hedefleyen 7DX parti serisinin bu seneki ayağı olan 7D8 Demo ...
Kategori: Yarışma

aç-kapa EÄŸitim Türkiye'de İnternet Konferansı - Internet Teknolojileri DerneÄŸi -22-23 Aralık ODTÜ

Türkiye'de İnternet Konferansı - Internet Teknolojileri DerneÄŸi -22-23 Aralık ODTÜ

Etkin Katılım ÇaÄŸrısı Türkiye’de Internet ile ilgili grupları biraraya getirerek İnternet’i tum boyutlarıyla tanıtmak, gelistirmek, tartı...
Kategori: EÄŸitim