Türkçe Karakter Hataları ve Çözümü

Begonnen von navruz, 08 März 2008, 00:16:25

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

navruz

NOT: Aşağıdaki hatalar pragmaMx 0.1.10 sürümü için geçerlidir. 0.1.11 sürümü ile birlikte bu sorunlar çözülmüştür.

Merhaba :)
Bir süredir bu yazıyı yazmak niyetindeydim. Bugüne nasip oldu.
Kısa bir süre önce Stories_Archive modülünde bulunan Türkçe karakter hatasının çözümünü vermiştik.
Sorun Türkçe karakterleri henüz desteklemeyen htmlentities komutundan kaynaklanıyordu. Daha sonra bu hatanın bir kaç bölümde daha olduğunu gözlemledim.
Bu sorunları çözümlemek için aşağıda yapılacak değişiklikleri belirttim. Tek tek uğraşmadan htmlentities kodunu htmlspecialchars olarak değiştirseniz daha kolay olur. Çünkü sadece htmlentities kodunu htmlspecialchars ile değiştiriyorsunuz.
htmlentities içeren dosyalar:

1- Haber Arşivi modülü
/modules/Stories_Archive/index.php

Bul:
$row['title'] = '<a href="modules.php?name=News&amp;file=article&amp;sid=' . $row['sid'] . '">' . htmlentities($row['title']) . '</a>';

Değiştir:
$row['title'] = '<a href="modules.php?name=News&amp;file=article&amp;sid=' . $row['sid'] . '">' . htmlspecialchars($row['title']) . '</a>';

Bul:
$row['cat_title'] = '<a href="modules.php?name=News&amp;file=categories&amp;catid=' . $row['catid'] . '">' . htmlentities($row['cat_title']) . '</a>';

Değiştir:
$row['cat_title'] = '<a href="modules.php?name=News&amp;file=categories&amp;catid=' . $row['catid'] . '">' . htmlspecialchars($row['cat_title']) . '</a>';


2- Meta etiketleri
Burada görünümde herhangi bir hata bulunmuyor. Fakat meta etiketlerinde bulunan Türkçe karakterler bozuk çıkıyor. Özellikle SEO konusuyla ilgilenelerin mutlaka değiştirmesi lazım. Zira keywordsler(Anahtar kelimeler) oldukça önemli.
/header.php
Bul
<meta name="author" content="<?php echo htmlentities(strip_tags($GLOBALS['sitename'])) ?>">
<meta name="keywords" content="<?php echo htmlentities($GLOBALS['metakeywords']) ?>, <?php echo MX_VERSION ?>">
<meta name="generator" content="<?php echo MX_VERSION ?> - by http://pragmaMx.org">
<meta name="copyright" content="Copyright (c) <?php echo Date("Y"?> by <?php echo htmlentities(strip_tags($GLOBALS['sitename'])) ?>">
<meta name="description" content="<?php echo htmlentities(strip_tags($GLOBALS['slogan'])) ?>">

Değiştir
<meta name="author" content="<?php echo htmlspecialchars(strip_tags($GLOBALS['sitename'])) ?>">
<meta name="keywords" content="<?php echo htmlspecialchars($GLOBALS['metakeywords']) ?>, <?php echo MX_VERSION ?>">
<meta name="generator" content="<?php echo MX_VERSION ?> - by http://pragmaMx.org">
<meta name="copyright" content="Copyright (c) <?php echo Date("Y"?> by <?php echo htmlspecialchars(strip_tags($GLOBALS['sitename'])) ?>">
<meta name="description" content="<?php echo htmlspecialchars(strip_tags($GLOBALS['slogan'])) ?>">


3- Özel Mesajlar modülü
Mesajı yanıtlarken karşı tarafın gönderdiği mesajdaki karakterler bozuluyor.
/modules/Private_Messages/index.php
Bul
. "<td><textarea name=\"message\" id=\"message\" rows=\"10\" cols=\"45\" ONSELECT=\"storeCaret(this);\" ONCLICK=\"storeCaret(this);\" ONKEYUP=\"storeCaret(this);\">" . htmlentities($replymsg) . "</textarea></td>"
Değiştir
. "<td><textarea name=\"message\" id=\"message\" rows=\"10\" cols=\"45\" ONSELECT=\"storeCaret(this);\" ONCLICK=\"storeCaret(this);\" ONKEYUP=\"storeCaret(this);\">" . htmlspecialchars($replymsg) . "</textarea></td>"

Bul
. "<td><textarea name=\"message\" id=\"message\" rows=\"10\" cols=\"45\" onSelect=\"storeCaret(this);\" onClick=\"storeCaret(this);\" onKeyUp=\"storeCaret(this);\">" . htmlentities($msg_text) . "</textarea></td>"

Değiştir
. "<td><textarea name=\"message\" id=\"message\" rows=\"10\" cols=\"45\" onSelect=\"storeCaret(this);\" onClick=\"storeCaret(this);\" onKeyUp=\"storeCaret(this);\">" . htmlspecialchars($msg_text) . "</textarea></td>"

   
4- Footer Mesajı ve Site Servisi Mesajı
Yönetici Menüsü / Ayarlar  bölümünden girdiğiniz alt mesajları ve Site Servisi mesajını config.php dosyasına yazarken Türkçe karakterleri bozarak kaydediyor.
admin/modules/settings.php
Dikkat : Bu dosyada 14 kez geçmektedir. Fakat bazı bölümler için değiştirmeye gerek yok.
Bul
$foot1 = (empty($foot1)) ? "" : htmlentities($foot1);
$foot2 = (empty($foot2)) ? "" : htmlentities($foot2);
$foot3 = (empty($foot3)) ? "" : htmlentities($foot3);
$foot4 = (empty($foot4)) ? "" : htmlentities($foot4);

Değiştir
$foot1 = (empty($foot1)) ? "" : htmlspecialchars($foot1);
$foot2 = (empty($foot2)) ? "" : htmlspecialchars($foot2);
$foot3 = (empty($foot3)) ? "" : htmlspecialchars($foot3);
$foot4 = (empty($foot4)) ? "" : htmlspecialchars($foot4);


Bul
. "<textarea name=\"xmetakeywords\" cols=\"50\" rows=\"5\">" . htmlentities($metakeywords) . "</textarea>"

Değiştir
. "<textarea name=\"xmetakeywords\" cols=\"50\" rows=\"5\">" . htmlspecialchars($metakeywords) . "</textarea>"

Bul
. "<tr valign=\"top\"><td>" . _EMAILMSG . ":</td><td><textarea name=\"xnotify_message\" cols=\"40\" rows=\"4\">" . htmlentities($notify_message) . "</textarea></td></tr>"

Değiştir
. "<tr valign=\"top\"><td>" . _EMAILMSG . ":</td><td><textarea name=\"xnotify_message\" cols=\"40\" rows=\"4\">" . htmlspecialchars($notify_message) . "</textarea></td></tr>"

Bul
echo "<tr valign=\"top\"><td>" . _SITESERVICETEXT . ":</td><td><textarea name=\"xmxSiteServiceText\" cols=\"50\" rows=\"5\">" . htmlentities($mxSiteServiceText) . "</textarea></td></tr>";

Değiştir
echo "<tr valign=\"top\"><td>" . _SITESERVICETEXT . ":</td><td><textarea name=\"xmxSiteServiceText\" cols=\"50\" rows=\"5\">" . htmlspecialchars($mxSiteServiceText) . "</textarea></td></tr>";


5- Etkinlik Takvimi
Kategori isimlerini değiştiriken Türkçe karakterleri bozarak kaydediyor.
/modules/Kalender/admin/cat.php
Bul
$newcols .= "\$caldotcolor[".$i."] = \"".trim(htmlentities($caption, ENT_QUOTES))."\";\n";

Değiştir
$newcols .= "\$caldotcolor[".$i."] = \"".trim(htmlspecialchars($caption, ENT_QUOTES))."\";\n";
Destek için forumu kullanın. Özel mesaj atmayın.

pragmaMx Türkiye