Проблем с енкодинг

MaZZoHuCTa

Registered
Проблема ми е следния:

65abfe00ad7e1f97.PNG


На снимката се вижда най - добре за проблема. Предполагам, че е от енкодинга на таблицата от кадето се взимат записите и от енкодинга на самия сайт,а можеби и енкодинга на самия файл.

Проблема се проявява само при заглавия на кирилица и то не при всички.

Ако може някой да даде идея.
 
Мисля че проблема не е в енкодинга , а се повучава от начина по който записваш данните в базата. И това квадратче се появява само когато съкращаваш текста до определен брой символи , или се бъркам ?

:lol:
 
Код:
<tr>
openside("Седмично");
$result = dbquery("SELECT download_id, download_title, download_count_s FROM ".$db_prefix."downloads ORDER BY download_count_s DESC LIMIT 20");
if (dbrows($result) != 0) {
echo "<table width='100%' cellpadding='0' cellspacing='0' class='tbl'>";
while ($data = dbarray($result)) {
echo "<tr>
<td class='small'>
<img src='".THEME."images/wnp.png'>
<a href='http://mp3hitove.eu/".BASEDIR.seoname($data['download_title'])."-".$data['download_id'].".php' onMouseover=\"ddrivetip('".$data['download_title']."','#eaefef', 200)\"; onMouseout=\"hideddrivetip()\"

class='side'>".trimlink($data['download_title'], 35)."</a>
</td>
<td align='right'>".$data['download_count_s']."</td>
</tr>";
}

Да но като задам повече символи да се виждат, едно се оправи друго се развали.. Колкото до записването сега ще погледна и файла, който праща инфото към базата данни.

Ето го и него:

Код:
<?php
require_once "maincore.php";
require_once BASEDIR."subheader.php";
require_once BASEDIR."side_left.php";

if (file_exists(INFUSIONS."pateikti_daina/locale/".$settings['locale'].".php")) {
	include INFUSIONS."pateikti_daina/locale/".$settings['locale'].".php";
} else {
	include INFUSIONS."pateikti_daina/locale/Lithuanian.php";
}

if (isset($_POST['submit_download']) && $action == "submit") {
	$download_title = stripinput($_POST['download_title']);
	$download_url = stripinput($_POST['download_url']);
	$download_cat = stripinput($_POST['download_cat']);
	$download_license = stripinput($_POST['download_license']);
	$download_filesize = stripinput($_POST['download_filesize']);
	if(strlen($download_title) > 50){
	$dwtit = $download_title.'...';
	} else {
	$dwtit = $download_title;
	}
	$result = dbquery("INSERT INTO ".$db_prefix."downloads_submissions (download_title,download_title_small, download_url, download_cat, download_license, download_filesize, download_datestamp, download_count, download_submitted) VALUES ('$download_title','$dwtit', '$download_url', '$download_cat', '$download_license', '$download_filesize', '".time()."', '0', '".$userdata['user_id']."')");
	opentable($locale['dls123']);
	echo "<center><br>\n".$locale['dls124']."<br><br>
<a href='pateikti_daina.php'>".$locale['dls125']."</a><br><br>
<a href='index.php'>".$locale['dls126']."</a><br><br>\n</center>\n";
	closetable();
}

if ($action == "") {
opentable($locale['dls102']);
$result = dbquery("SELECT * FROM ".$db_prefix."download_cats ORDER BY download_cat_name");
if (dbrows($result) != 0) {
	while ($data = dbarray($result)) {
		$editlist .= "<option value='".$data['download_cat_id']."'>".$data['download_cat_name']."</option>\n";
	}
echo "<form name='submit_download_form' method='post' action='".FUSION_SELF."?action=submit' onSubmit='return validateDownload(this);'>
<table align='center' cellpadding='0' cellspacing='0' width='400'>
<tr>
<td width='80' class='tbl'>".$locale['dls103']."</td>
<td class='tbl'><input type='text' name='download_title' class='textbox' style='width:300px;'></td>
</tr>
<tr>
<td width='50' class='tbl'>".$locale['dls105']."</td>
<td class='tbl'><input type='text' name='download_url' class='textbox' style='width:300px;'></td>
</tr>
<tr>
<td width='50' class='tbl'>".$locale['dls106']."</td>
<td class='tbl'><select name='download_cat' class='textbox'>$editlist</select></td>
</tr>
<tr>
<td width='50' class='tbl'>".$locale['dls107']."</td>
<td class='tbl'><input type='text' name='download_license' class='textbox' style='width:125px;' value='".$userdata['user_name']."'></td>
</tr>
<tr>
<td align='center' colspan='2' class='tbl'><input type='submit' name='submit_download' value='".$locale['dls111']."' class='button'></td>
</tr>
</table>
</form>\n";
} else {
echo "<center><br>\n".$locale['dls128']."<br><br>\n</center>\n";
}
closetable();
}
echo "<script type='text/javascript'>
function validateDownload(frm) {
	if (frm.download_title.value==\"\" || frm.download_url.value==\"\" || frm.download_license.value==\"\") {
		alert(\"".$locale['dls127']."\"); return false;
	}
}
</script>\n";


require_once BASEDIR."side_right.php";
require_once BASEDIR."footer.php";

?>
 
Аз имах подобен проблем, но при мен излизаха въпросителни, заради това трябваше да си променя функцията малко. Ето ти моята функция за свързване с БД.
PHP:
function db_conn()
{
    mysql_connect('192.168.1.3','username','pass') or die('Грешка с базата данни!');
    mysql_select_db('dbusers');
    mysql_query("SET CHARACTER SET utf8");
    mysql_query('SET NAMES utf8');
}
 
Режеш със substr нали? ползвай mb_strlen, mb_substr и т.н.
Просто при utf-8 има символи, които са повече от 1 байт и като режеш със substr то отрязва единия байт на последния символ и остава квадратче на мястото на непълната буква.
 
да ползвам substr, но като сложа на функцията mb_substr не ми се зарежда половината сайт, php_mbstring е пуснато.
 
PHP:
if(strlen($download_title) > 50){
   $dwtit = $download_title.'...';
} else {
   $dwtit = $download_title;
}

Като гледам само броиш дължината, но не решежеш...


PHP:
if(mb_strlen($download_title) > 50){
   $dwtit = mb_substr($download_title, 0, 49).'...';
} else {
   $dwtit = $download_title;
}

Ето така, може би... но си направи чарсета и кодировката на файловете на UTF-8, като кодировката UTF-8 without BOM...
 
relax15pyt каза:
PHP:
if(strlen($download_title) > 50){
   $dwtit = $download_title.'...';
} else {
   $dwtit = $download_title;
}

Като гледам само броиш дължината, но не решежеш...


PHP:
if(mb_strlen($download_title) > 50){
   $dwtit = mb_substr($download_title, 0, 49).'...';
} else {
   $dwtit = $download_title;
}

Ето така, може би... но си направи чарсета и кодировката на файловете на UTF-8, като кодировката UTF-8 without BOM...

Като го направя така, файла който праща инфото към бд-то дава бяла страница
 
Ами замисли се за пълна оптимизация на кода ти. Нещо не го бива явно, а мене ме мързи в момента да ти го оптимизирам като хората.
 

Back
Горе