|
|
|
| Есть файл перевода строк из кодировки WINDOWS-1251 в UTF-8 и обратно
<?php
setlocale(LC_ALL,"ru_RU.CP1251");
define('Encoding','WINDOWS-1251');
define ('XMLHead',"<?xml version='1.0' encoding='".Encoding."'?>");
function utf8encode($str,$encode=Encoding)
{
return iconv($encode,'UTF-8',$str);
}
function utf8decode($str,$encode=Encoding)
{
return iconv('UTF-8',$encode,$str);
}
?>
но почему то в браузере отображается лишь бы что...
например из такого :
<текст>
<строка>указан текстовый xml-файл1 для вставки</строка>
</текст>
получается такое:
<текст>
<строка>указан текстовый xml-файл2 для вставки</строка>
<строка>указан текстовый xml-файл3 для вставки</строка>
</текст>
В чём проблема??? | |
|
|
|
|
|
|
|
для: servannin
(10.03.2005 в 19:45)
| | Поищи я на этом форуме выкладывал функцию преобразования из win1251 в utf8
Я использовал для wap. | |
|
|
|
|
|
|
|
для: servannin
(10.03.2005 в 19:45)
| | А библиотека iconv на сервере подключена? | |
|
|
|
|
|
|
|
для: servannin
(10.03.2005 в 19:45)
| | А какая кодировка у страницы? Это ведь на странице выводится? Или в файл пишется? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(10.03.2005 в 23:59)
| | Кодировка у страницы получается Кириллица(Windows).
Это на странице выводится и в файл пишется.
На счёт версии php - у меня стоит 5.0.3 а там такие расширения как iconv, dom, libxml и т.д. уже подключены.
Что делать ? Подскажите в чём ошибка.
Спасибо | |
|
|
|
|
|
|
|
для: servannin
(13.03.2005 в 19:14)
| | Дело в том, что я не могу создать такую же ситуацию у себя. Если я копирую приведенный вами код (иероглифы), то они у меня всегда отображаются нормально, какую бы кодировку в браузере я не выбирал.
Можно подобрать такую кодировку страницы (в браузере), чтобы иероглифы отображались нормально? Или у вас всегда иероглифы? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(13.03.2005 в 20:26)
| | Да, у меня всегда иероглифы.Да тут у меня оказывается не в серваке наверное проблема, а в чём то другом, потому что я открыл пару страниц в интернете у себя в браузере - и там тоже была это белеберда. Но только некоторые страницы так отображаются.НО...я меняю кодировку в этих страницах и всё становится нормально.
А вот с >указа....... чё то не то.
??? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(13.03.2005 в 20:26)
| | А вы попробуйте скопировать из режима просмотра html кода, а не прямо из окна браузера. (Дизайнеру) | |
|
|
|
|
|
|
|
для: antf
(13.03.2005 в 20:50)
| | Я в таком случае пишу функцию
<?
//Убирает то безобразие, которое функция htmlspecialchars() натворила с национальными символами немецкого и франц. языка
function ConvertBack($Str)
{
$Str=str_replace('&#', '&#', $Str);
return($Str);
}
?>
|
А вообще мне сказали, что причина такого безобразия - несовпадение кодировки сервера и компьютера клиента. У меня такая проблема возникает на франкоязычных форумах. | |
|
|
|
|
|
|
|
для: antf
(13.03.2005 в 20:57)
| | Всем спасибо за помощь, в особенности antf'у.
В браузере сейчас отображается просто отлично, но ,к сожалению, в файл записывается похожая чушь ...
Например, вот это:
<Рисунки>
<строка>указан графический xml-файл1 для вставки</строка>
<строка>указан графический xml-файл2 для вставки</строка>
</Рисунки>
отображается как:
<Рисунки>
<строка>указан графический xml-файл1 для вставки</строка>
<строка>указан графический xml-файл2 для вставки</строка>
</Рисунки>
Я делаю это так(это версия пока пробная , так что на довольно простой код внимания не обращайте... 8-)) :
$dom->formatOutput=true;
if ($node !== $dom){
$asd=utf8decode(htmlspecialchars($dom->saveXML($node)));
$asd=str_replace('&#', '&#', $asd);
echo $asd;
$file="textfile.txt";
if(file_exists($file))
{
//$k1="asdfgdsfgd";
$fp = fopen ($file,"w");
fwrite($fp,$asd);
fclose($fp);
}}
Не могу пока понять где ошибка??? | |
|
|
|
|
|
|
|
для: servannin
(13.03.2005 в 21:33)
| | Так что, кто нибудь поможет??? | |
|
|
|
|
|
|
|
для: servannin
(14.03.2005 в 00:34)
| | 1) Почему в браузере все нормально, а в файле - иероглифы? Потомучто в процессе ваших преобразований все без исключения символы были заменены на html код символа. Браузер их отображает (взгляните на код), а текстовой редактор все отображает как есть. Нужно найти то место, где происходит перекодировка и устранить это. Я с данным расширением PHP не работал, поэтому ничем помочь не смогу, да и шрифты Unicode у меня не установлены.
2) Методом тыка попробуйте:
<?
$asd=htmlspecialchars(utf8_decode($dom->saveXML($node)), ENT_COMPAT, UTF-8);
?>
|
| |
|
|
|
|
|
|
|
для: antf
(14.03.2005 в 03:34)
| | Я потихоньку схожу с ума , ... ничего не выходит! ((Есть Бог на этом свете или нет? | |
|
|
|
|
|
|
|
для: servannin
(14.03.2005 в 13:43)
| | Сейчас код выглядит так :
<?php
$dom->formatOutput=true;
if ($node !== $dom){
$asd=htmlspecialchars(utf8decode($dom->saveXML($node)));
$asd=str_replace('&#', '&#', $asd);
echo $asd;
$file="textfile.txt";
if(file_exists($file))
{
$fp = fopen ($file,"w");
$asd=utf8decode($dom->saveXML($node));
fwrite($fp,$asd);
fclose($fp);
}}
//else
//$asd=htmlspecialchars($dom->saveXML());
//echo $asd;
?>
и выводит так:
<Рисунки>
<строка>указан графический xml-файл1 для вставки</строка>
<строка>
А как содержание сделать , то есть значения <строк>
чего то не могу.... | |
|
|
|
|
|
|
|
для: servannin
(14.03.2005 в 13:57)
| | А что у вас за функция utf8decode()? Это ваша собственная функция?
В php есть функция utf8_decode() | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(14.03.2005 в 14:51)
| | У меня вот такие функции кодировок:
<?php ## Функции перевода строк из кодировки WINDOWS-1251 в UTF-8 и обратно
setlocale(LC_ALL,"ru_RU.CP1251");
define('Encoding','WINDOWS-1251');
define ('XMLHead',"<?xml version='1.0' encoding='".Encoding."'?>");
function utf8encode($str,$encode=Encoding)
{
return iconv($encode,'UTF-8',$str);
}
function utf8decode($str,$encode=Encoding)
{
return iconv('UTF-8',$encode,$str);
}
?> | |
|
|
|
|
|
|
|
для: servannin
(14.03.2005 в 14:59)
| | Я думаю, что вам сначала нужно найти фрагмент кода, который превращает сами символы в их коды, а потом подумать чем его можно заменить. Проверяйте содержимое строки или другой переменной после каждой операции над ней (перекодирования) и вы его найдете | |
|
|
|