İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Bazı karakterler değişmiyor "ş,ı,ğ"

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
Mrb arkadaşlar veri tabanından verileri çekiyorum sonra bu fonksiyonla
PHP:
function duzenle($veri) {
$bozuk    = array('i','ç','Ç','s','g','ü','ö','I','Ç','S','G','Ü','Ö',' ','?', '`');
$duzgun    = array('i','c','C','s','g','u','o','i','c','S','G','U','O','_','_','');
$veri    = @str_replace($bozuk,$duzgun,$veri);
return $veri;
}
$seo=@duzenle($db_den_cekilen_veri);
echo $seo;
değiştirmeye çalışıyorum
Dosya_Sıkıştırıcılar => BUnda görüldüğü gibi sadece boşluğu değiştirmiş
Dil_Oğrenimi => Bunda sadece Ö yü ve Boşluğu değiştirmiş ama diğerlerini değiştirmiyor.

Ama Enteresan olan
PHP:
$deneme="şğıç  ŞIÇĞ";
$degistir=@duzenle($deneme);
echo $degistir;
//Böyle bir kendimiz karakter yazarsak
//Ozaman Onun Çıktısı Bu şekilde oluyor Yani çalışıyor ==>sgic__SiCG
Sorun db den çekilen veriyi neden değiştirmiyor. Tşk.
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
herhalde amacınız seo olarak düzenlemek. Ben bunun için aşağıdaki kodu kullanıyorum. Ve karakter bakımından bir sorunla karşılaşmadım. Bunu kullanmanızı tavsiye ederim...

PHP:
<?php

function make_url_friendly($url)
{
    $url = trim($url);
    $url = strtolower($url);

    $find = array('<b>', '</b>');
    $url = str_replace ($find, '', $url);

    $url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);

    $find = array(' ', '"', '&', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
    $url = str_replace ($find, '-', $url);

    $find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
    $url = str_replace ($find, 'e', $url);

    $find = array('í', 'ı', 'ì', 'î', 'ï', 'I', 'İ', 'Í', 'Ì', 'Î', 'Ï');
    $url = str_replace ($find, 'i', $url);

    $find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
    $url = str_replace ($find, 'o', $url);

    $find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
    $url = str_replace ($find, 'a', $url);

    $find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
    $url = str_replace ($find, 'u', $url);

    $find = array('ç', 'Ç');
    $url = str_replace ($find, 'c', $url);

    $find = array('ş', 'Ş');
    $url = str_replace ($find, 's', $url);

    $find = array('ğ', 'Ğ');
    $url = str_replace ($find, 'g', $url);

    $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');

    $repl = array('', '-', '');

    $url = preg_replace ($find, $repl, $url);
    $url = str_replace ('--', '-', $url);

    return $url;
}

?>

PHP:
echo make_url_friendly($deneme);
 

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
Önerin İçin sağol dostum Ama Bu seferde belirttiğim karakterleri yok ediyor yani
Optimizasyon Araçları Bunu =>optimizasyon-araclar gördüğün gibi en sonda yer alması gereken "i" yok
Dosya Sıkıştırıcılar Bunuda =>dosya-sktrclar Bu hale getiriyor neden yok olıyor bu karakterler :S
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
Herhalde karakter hatasından kaynaklanıyor... Şöyle yapalım...

Veri tabanına girip benim verdiğim yöntem ile yok edilen harflerin ne şekilde gösterildiğine bakabilir misiniz ? veri tabanında "ı" harfi "2587;" gibi karakterler ile mi gözüküyor ? eğer öyle ise verdiğim kodda değişiklik yaparak bu sorunu çözebiliriz...

Başka ne gibi bir sorun olabilir, aklıma birşey gelmiyor. :D
 

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
Yok yav düzgün bende çıldırcam zaten :s
hata.JPG
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
O seo yolunu kullandığım veritabanları da seninki ile aynısı. Yani latin5_turkish_ci ! Bende herhangi bir hata vermiyor. Sende de vermesi gerekir di ? Acaba başka ne olabilir ki ?

merak ettim..

edit: Acaba sayfadaki karakter kodlamasından kaynaklanabilir mi ?
 

maxcilopez

0
İyinet Üyesi
Katılım
27 Ekim 2006
Mesajlar
545
Reaction score
0
Dostum Bak şimdi senin dediğin gibi heralde karakter kodlamasından kaynaklanıyor
Verileri çıplak hali ile çektiğimde yani
PHP:
$dbhost = "localhost";
$dbname = "ffffff";
$dbuser = "fffffffff";
$dbpass = "fffffffff";
mysql_connect ($dbhost, $dbuser, $dbpass) or die (mysql_error());
@mysql_select_db ($dbname) or die (mysql_error());
						mysql_query("SET NAMES 'latin5'");
						mysql_query("set SESSION character_set_client = latin5");
						mysql_query("set SESSION character_set_connection = latin5");
						mysql_query("set SESSION character_set_results = latin5");

Bu şekilde çektiğimde yukarıda ki sonuçları veriyor
Ama Şimdiki verdiğim kodda

PHP:
						mysql_query("SET NAMES 'latin5'");
						mysql_query("set SESSION character_set_client = latin5");
						mysql_query("set SESSION character_set_connection = latin5");
						mysql_query("set SESSION character_set_results = latin5");
Bu kodları kaldırdığımda
CD DVD Araçlar?|321|
Disk Araçlar?|34|
Dosya Araçlar|53|
Dosya S?k??t?r?c?lar|12|
Optimizasyon Araçlar?|43|
Sistem Araçlar?|34|

titlelerr bu şekilde dolayısı ile seodada soru işaretleri yok oluyor . Şimdi nasıl bir yol izleyeceğiz.
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
Tespit doğru...

PHP:
   mysql_query("set SESSION character_set_connection = latin5");

Bu kısmı aşağıdaki ile değiştirip deneyebilir misiniz ?

PHP:
   mysql_query("set SESSION character_set_connection = latin5_turkish_ci");
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
:D olduğuna memnun oldum.

Gidip televizyon izlicem seni bekliyorum :p Çünkü sıkıntını tahmin edebiliyorum ....

hadi kolay gelsin ve başarılar...
 

alper60

0
İyinet Üyesi
Katılım
15 Ağustos 2008
Mesajlar
4
Reaction score
0
selamlar,
@yagmayok; benimde başımda aynı problem var uzun zamandır.
şöyle ki; joomla 1.0.x ile latin_5 ile siteyi kurdum, daha sonra şu sitedeki takvimi siteye entegre ettim http://www.extrosoft.com/
ancak takvim de ş, ğ , ve ı harfleri sorunlu.dropdown menülerde ve mesela yeni bi takvim açtığımda ilk yazımda hatalı ikinci de düzeltince yazdığımı sorunsuz oluyor.ancak not girdiğimde sorunlu yine.özelin kapalı site adresini vermek istiyorum ama mail yoluyla vs. bi şekilde ulaşabilir miyiz sana bi baksan..takvimi yapan adam bulamadı ya da uğraşmıyor anlamadım..adama yazmadığım kalmadı ama yok hala bir şey.:(

bu config.php
PHP:
<?php

error_reporting(E_ALL ^ (E_NOTICE));

######################
#
### SQL
#
#####################

# current drivers are:
#
# MySQL - "mysql"
# PostgreSQL - "pgsql"
# MSSQL Server - "mssql"
#
# PostgreSQL
# ----------
# for most PostgreSQL default installations,
# running on the same host, you may have to
# comment out the DBHOST and DBPORT lines
#
######################

define("_CAL_SQL_DRIVER_", "mysql");

define("_CAL_DBHOST_", "localhost");
define("_CAL_DBPORT_", "");

define("_CAL_DBUSER_", "xxxxx");
define("_CAL_DBPASS_", 'xxxxx');
define("_CAL_DBNAME_", "xxxxx");

define("_CAL_DBPREFIX_", "takvim_");


##########################################
#
### PATHS AND URLS (with trailing slash)
#
#########################################
define("_CAL_BASE_PATH_", "/home/kullanıcıadı/public_html/takvim/");
define("_CAL_BASE_URL_", "http://www.siteadresim.com/takvim/");


# GLOBAL SETTINGS
####################
require_once(@constant("_CAL_BASE_PATH_") . "include/global_settings.php");



# see include/languages
# for other options
##############################
@define("_CAL_LANG_", "tr_TR"); 

##########################
#
### MAP LINK
#
#########################

# Map link for events with an Address. The default goes to mapquest.com
# with a default country of USA. You may create your own by editing
# include/custom_functions.php To disable the map link, set _CAL_NOMAP_ to 1.
#############################################################################33

@define("_CAL_NOMAP_", 1);


#######################################
#
# LEAVE THESE ALONE
#
#######################################
define("_CAL_ADMIN_USER_", "admin");
set_magic_quotes_runtime(0);
require_once(@constant("_CAL_BASE_PATH_") ."include/php-compat.php");
?>

bu da globalsettings.php

PHP:
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
//
// +----------------------------------------------------------------------+
// | Copyright (c) 2004-2006 eXtrovert Software                           |
// +----------------------------------------------------------------------+
// | This source file is subject to the license you agreed to when this   |
// | software package was installed. A copy of the license has also been  |
// | distributed with this software. See LICENSE.txt under the base       |
// | install directory. If you do not have a copy of this license file,   |
// | or obtained this software through a 3rd party without agreeing to    |
// | the license, please cease using this software and send an e-mail to  |
// | [email protected].                                               |
// +----------------------------------------------------------------------+
//
// $Id: global_settings.php,v 1.21 2007/03/18 14:20:40 ian Exp $
//

###################################
#
### CHECK COOKIES FIRST
#
####################################

if($_COOKIE['_CAL_PAGE_MAIN_']) @define('_CAL_PAGE_MAIN_', $_COOKIE['_CAL_PAGE_MAIN_']);
if($_COOKIE['_CAL_LANG_']) @define('_CAL_LANG_', $_COOKIE['_CAL_LANG_']);
if($_COOKIE['_CAL_SITE_NAME_']) @define('_CAL_SITE_NAME_', $_COOKIE['_CAL_SITE_NAME_']);

require_once(@constant("_CAL_BASE_PATH_") . "include/classes/class.sql.php");

# check for user module..
@include_once(@constant("_CAL_BASE_PATH_") ."modules/auth/auth.php");


define("_THYME_VER_", "1.3");
define("_THYME_ENC_", "zend");

global $_cal_sql, $_cal_dbpref;

#$_cal_dbpref = constant("_CAL_DBNAME_").'.'.constant("_CAL_DBPREFIX_");

$_cal_dbpref = constant("_CAL_DBPREFIX_");

$_cal_sql or $_cal_sql = new _cal_sql();

$globs = $_cal_sql->query("select variable, setting from {$_cal_dbpref}GlobalSettings", true);

foreach(array_keys($globs) as $g) {
   @define(trim($g), $globs[$g]);
}

if(!@constant("_CAL_SITE_NAME_")) @define("_CAL_SITE_NAME_", "Thyme");

if(file_exists(_CAL_BASE_PATH_.'modules/locations/class.location.php')) {

   global $_cal_loc_opts;

   $_cal_loc_opts or $_cal_loc_opts = $_cal_sql->query("select variable, setting
       from {$_cal_dbpref}ModuleSettings where module = 'locations'", true);

   @define('_CAL_LOCATIONS_MOD_', ($_cal_loc_opts['installed'] || $_cal_loc_opts['use_locations'
]));

   if($_cal_loc_opts['display_name'])
        define("_LOCATION_", $_cal_loc_opts['display_name']);

   include_once(_CAL_BASE_PATH_.'modules/locations/class.location.php');
}

yardımcı olursan dile benden ne dilersen..verdiğin mysqlquery latin5 diye eklenen kodları burda nereye eklemeliyim ki düzelsin?

düzeltme: php kod içine aldım
 

pC_qOp@T

0
İyinet Üyesi
Katılım
1 Haziran 2008
Mesajlar
2
Reaction score
0
Tespit doğru...

PHP:
   mysql_query("set SESSION character_set_connection = latin5");

Bu kısmı aşağıdaki ile değiştirip deneyebilir misiniz ?

PHP:
   mysql_query("set SESSION character_set_connection = latin5_turkish_ci");
kardeşim bi tanesin yanımda olsan alnından öperdim.:D:Ddeli oldum.sonunda cözdüm.saolasın..
 

biteme

0
İyinet Üyesi
Katılım
15 Ocak 2008
Mesajlar
0
Reaction score
0
aynı sorunu bende yaşıyorum dediklerinizi yaptım ama hala ğş ı harlferi bozuk çö ü falan düzgün çıkıyor

yardımcı olun lütfen
 

biteme

0
İyinet Üyesi
Katılım
15 Ocak 2008
Mesajlar
0
Reaction score
0
php sayfamdaki kod

PHP:
<?php
ob_start();
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-Type: text/html;charset=iso-8859-9");

şeklinde

html sayfam ise

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  
  <script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAAu1pBROz5a4aEpmR_OUioBRQk8fBngkCFsA3p8orwZDTWYL2YxRTCsF1OihwlEYTSbQHH3II6C1caXA"></script>
  <script type="text/javascript">
// <![CDATA[
google.load("jquery", "1.3.2");
google.setOnLoadCallback(function() {
});
// ]]-->
</script>


bu sekilde sql karsilamasi ise utf_general_ci

ğ ş ı harfleri bozuk fakat ç ö ü düzgün çıkıyor ne yapmam lazım nolur yardim edin
 

yagmayok

1
İyinet Üyesi
Katılım
25 Ocak 2005
Mesajlar
7,131
Reaction score
89
Galiba java içinde gösterirken bu sorunu yaşıyorsunuz. Eğer bu şekilde ise daha önceden böyle bir tecrübem olmadı. Ama java kullanırken meydana gelen karakter sorunlarını çözme ile iligili makaleler var, onları araştırmanızı öneririm.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst