Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Unicode in PHP
 
 автор: Sirius1981   (13.08.2008 в 10:52)   письмо автору
 
 

Sdrawstwuite dammi i gospoda pomogite poschalsto!

Ja delaju praktiku na predprijatii i peredomnoi postawili sada4u w PHP5 - sdalat tak 4to bi PHP5 rasposnowal Unicode. Nam prihoditsja rabott s arabskim, kitaiskimi i drugimi schriftami. Esli ja sochranjaju text w arabskomm schrifte u potom widaju na ekrane ja wischu tolko ?????. Ja ponimaju 4to PHP5 ne podeschiwaet Unicode. Kak sdelat 4to bi ja mog wsjetaki sochranjat i w widawat na ekran tot text, kotorii ja sadaju.
S blagodarnostju Max

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 11:07)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 10:52)
 

В каком смысле "поддерживать"? Текст в Unicode - какой-то набор байт и только.

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 11:11)   письмо автору
 
   для: BinLaden   (13.08.2008 в 11:07)
 

W Unicode est wse snaki kotorie est w etom mire.
Arabskie bukwi whodjat taksche w Unicode i sanimaju 16 bit a PHP poderschiwaet tolko 8 bit. Poetomu widawaja sohranenii string ja wischu na ekrane tolko ????

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 11:39)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 11:11)
 

> PHP poderschiwaet tolko 8 bit.
Что Вы имеете ввиду? Для операций с mb-кодировками есть функции Multibyte String, Iconv.

> Poetomu widawaja sohranenii string ja wischu na ekrane tolko ????
Может Вы не отправили соответствующий заголовок? В какой конкретно кодировке текст - UTF-8, UCS-2, UCS-4?

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 11:48)   письмо автору
 
   для: BinLaden   (13.08.2008 в 11:39)
 

функции Multibyte String, Iconv - ja probowal ich ispolsowat, no po4emuta ne dobilsja schelaemogo resultata

$var="قاعدة المثقاب"

$str = mb_convert_encoding($var , "UTF-8", "UCS-2");

echo $var => resultat ?????????


Может Вы не отправили соответствующий заголовок? В какой конкретно кодировке текст - UTF-8, UCS-2, UCS-4?

4to wi podrasumewaete pod etim sagolowkom nastroiki w php.ini ?

Kak ja ponimaju mne nado arabskii schrift (UCS-2) perewesti w UTF-8 4to bi ja dobilsja schalaemogo resultata?

Ja dumaju wsja moja problema w nastroikach php.ini

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 11:55)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 11:48)
 

Вы не ответили на вопрос - в какой кодировке у Вас текст - UTF-8, UCS-2, UCS-4?

Под заголовком я подразумеваю HTTP-заголовок:

<?php
header
("Content-type: text/html; charset=utf-8");
?>

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 12:01)   письмо автору
 
   для: BinLaden   (13.08.2008 в 11:55)
 

<?php
header("Content-type: text/html; charset=utf-8");
?>

etot sagolowok ja negde ne wpisiwal, tak kak negde etogo ne wstre4al ja polsujus etim saitom http://linux-unix.ru/

W PHP ja escho 4ainik:) Mne prihoditsja delat praktiku ne sowsem po moemu profilju, poetomu budu wam o4en blagodaren esli wi mne smogli bi pomo4.

4to kosaetsja kodirowki ja ispolsuju ISO-5589-1
is phpinfo(): :
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 13:15)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 12:01)
 

Я не знаю как Вам можно помочь, если Вы используете ISO-5589-1 (latin1) и не понимаете, почему некоторые символы из Unicode не отображаются.

Попробуйте написать что-то по-китайски русскими буквами. Выйдет?

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 14:13)   письмо автору
 
   для: BinLaden   (13.08.2008 в 13:15)
 

Russkie bukwi widajutsja kak ???? . ISO-8859-1 Latin-1 kak ja pro4ital prednasnazin dlja angliskich bukw, arabskie bukwi nahodjatsja w ISO-8859-6. Ja nesnaju 4to mne escho delat, ja usche 3 den s etoi problemai barjus. Kak mne sdelat esli ja sadaju waruable s arabskimi bukwami, 4to bi na ekrane widilis taksche arabskie bukwi???

esli ja sohranjaju w wariable

$str="&#1605&#1610";

to ja polu4aju schelaemii resulatat, t.e ja wischu arabskie bukwi.

  Ответить  
 
 автор: mihdan   (13.08.2008 в 12:05)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 10:52)
 

Предложение к создателям сайта-может замутить русскую клавиатуру?

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 12:42)   письмо автору
 
   для: mihdan   (13.08.2008 в 12:05)
 

U menja k soschaleniju net rzsskoi klawiaturi

  Ответить  
 
 автор: mihdan   (13.08.2008 в 13:45)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 12:42)
 

http://www.yandex.ru/index_engl_qwerty.html - можете тут написать по русски, используя эту клавиатуру, а потом скопировать сюда )))

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 15:11)   письмо автору
 
   для: mihdan   (13.08.2008 в 13:45)
 

Тогда лучше http://translit.ru/

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 16:01)   письмо автору
 
   для: BinLaden   (13.08.2008 в 15:11)
 

ну пишу на русском. Надеюс будет понятнее. BinLaden - вы понимаете вчём моя проблемма?

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 17:29)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 16:01)
 

Нет.

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 17:49)   письмо автору
16 Кб
 
   для: BinLaden   (13.08.2008 в 17:29)
 

Ну тогда попробую ещё раз. У меня ест фаил xsl. Я из него считываю информацию при помощи функции fopen . Потом выдаю ето на монитор получаю в ответ толко ??????
Я прикрепил мои код здес. может так будет понятнеи.

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 17:54)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 17:49)
 

А можете прикрепить сам XSL-файл?

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 17:57)   письмо автору
16 Кб
 
   для: BinLaden   (13.08.2008 в 17:54)
 

Ну и как мне из етих долбаних 0 и 1 сделат UTF-8??

Да конечно фаил здес xls

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 18:00)   письмо автору
362 байт
 
   для: BinLaden   (13.08.2008 в 17:54)
 

a tut php

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 18:40)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 18:00)
 

XLS и XSL -- разные форматы.

XLS - это бинарный файл. И понятно, что Вы не можете просто так его прочитать, открыв как текстовый.

Вам может пригодиться пакет http://pear.php.net/package/Spreadsheet_Excel_Writer

  Ответить  
 
 автор: Sirius1981   (13.08.2008 в 19:14)   письмо автору
 
   для: BinLaden   (13.08.2008 в 18:40)
 

Ok ja posmotrju 4to etot paket moschet. Nadejus pomoschet, ina4e pridjetsja Was eschje pomu4it.

Wowsjakom slu4ie ogromnoe spasiba.

Da u was est ICQ, esli da posclite na moje milo.

Saranie spasibo

  Ответить  
 
 автор: BinLaden   (13.08.2008 в 19:50)   письмо автору
 
   для: Sirius1981   (13.08.2008 в 19:14)
 

Не придётся меня мучать :) Я сам этим пакетом один раз давно пользовался. Вспоминать или заново изучать что там и как у меня нет желания.

  Ответить  
 
 автор: Sirius1981   (15.08.2008 в 11:13)   письмо автору
1.1 Кб
 
   для: BinLaden   (13.08.2008 в 19:50)
 

продолжаю мою не лёxkую тему:)

Так вот я столкнулся с новои проблемой. Я сохраняю в Notepad фаил в Unicode. Откриваю его в PHP и выдаю на экран первая строка видна без проблем - т.е. выходнят арабские буквы, вторая строка выходит с ошибками - перед буквами появляются какие то новие символы, которым там и в помини недолжно бытъ. как мне избавится от этои фигни, и как мне всё сохранит это как Hex -верты или Oktal????
Зарание благодарю са помощ.

PS: Я преклипяю Faili для простоты понятия проблеми

  Ответить  
 
 автор: BinLaden   (15.08.2008 в 14:30)   письмо автору
 
   для: Sirius1981   (15.08.2008 в 11:13)
 

Зачем Вам в коде 2 вложенных цикла? Один из них явно лишний. Догадайтесь какой.

А вообще, похоже Вам мешает Byte Order Mark, который вставляет Notepad. Попробуйте после открытия файла (не в цикле) вставить этот кусок кода:

<?php
    $pattern 
"/^

        \\xEF\\xBB\\xBF | # UTF-8
        \\xFE\\xFF | # UTF-16BE
        \\xFF\\xFE | # UTF-16LE
        \\x00\\x00\\xFE\\xFF | # UTF-32BE
        \\xFF\\xFE\\x00\\x00 # UTF-32LE

    /x"
;

    
fseek($fppreg_match($patternfread($fp4), $match) ? strlen($match[0]) : 0);
?>

  Ответить  
 
 автор: Sirius1981   (15.08.2008 в 16:06)   письмо автору
 
   для: BinLaden   (15.08.2008 в 14:30)
 

Ну два цыкла мне надо - такие стандарты в фирме. 1 цикл - прочитан ли фаил до конца, а второи и так понятно. Я согласен что первы избыточный. насчё всего осталного сейчас буду пробоватъ. Спасибо

  Ответить  
 
 автор: BinLaden   (15.08.2008 в 16:32)   письмо автору
 
   для: Sirius1981   (15.08.2008 в 16:06)
 

Что-что? Какие еще у Вас стандарты в фирме? :))))

  Ответить  
 
 автор: Sirius1981   (15.08.2008 в 16:55)   письмо автору
 
   для: BinLaden   (15.08.2008 в 16:32)
 

Nu blin tak sastowlajut pisat. Da i w iniwere tosche w perwom semestre dokapiwalis, esli takiju prowerku ja nedelal. Nu blin ja na4inajuschii programmist(wernee eto sowsem ne moi profil:( )


Skaschite lutsche 4to obosna4aet
$pattern = "/^

\\xEF\\xBB\\xBF | # UTF-8
\\xFE\\xFF | # UTF-16BE
\\xFF\\xFE | # UTF-16LE
\\x00\\x00\\xFE\\xFF | # UTF-32BE
\\xFF\\xFE\\x00\\x00 # UTF-32LE

/x";
4to ja w etoi variale sohranjaju....
Ja ponimaju 4to bukwi UTF-8 nazalnie byte xEF/xBB/xBF - nu sa4em eto sohranjat w Variable i kak eto rabotaet to potom

Я предстовляю как я вас задолбал вопросами.
Я Вам очень благодарен за помощь

  Ответить  
 
 автор: BinLaden   (15.08.2008 в 17:06)   письмо автору
 
   для: Sirius1981   (15.08.2008 в 16:55)
 

Кем-то было принято, что для отличия текстов в UTF-8, UTF-16 и т.д. в самом начале бы располагась метка - Byte Order Mark. Notepad в данном случае хуже тем, что он не спрашивает разрешения на добавление этой метки. И добавляет. Обычно, метка эта - 2-4 байт.

Данное регулярное выражение позволяет определить наличие одной из меток. Для UTF-8 это три байта подряд: 0xEF 0xBB 0xBF.

Короче, чтобы не мучаться, раз Вам это совсем не нужно, то действительно просто установите нормальный редактор и отключите добавление BOM, сигнатуры Unicode или как там это еще может называться...

  Ответить  
 
 автор: Sirius1981   (15.08.2008 в 17:12)   письмо автору
 
   для: BinLaden   (15.08.2008 в 17:06)
 

Da blin s menja butilka:) Nu ili 4to tam eschje polagaetsja..:)

  Ответить  
 
 автор: mihdan   (15.08.2008 в 16:36)   письмо автору
 
   для: Sirius1981   (15.08.2008 в 16:06)
 

Забавные стандарты у вас )))

  Ответить  
 
 автор: Sirius1981   (18.08.2008 в 17:53)   письмо автору
 
   для: BinLaden   (13.08.2008 в 19:50)
 

Sdrawstwuite. Wot nowii durazkii wopros. Ja sohranil w UNF-8 sakodierowanii string w Hex-formate. Wot problema, kak ego teper pekodirowat w string obratno?

  Ответить  
 
 автор: BinLaden   (18.08.2008 в 18:05)   письмо автору
 
   для: Sirius1981   (18.08.2008 в 17:53)
 

<?php
 
echo pack('H*''ff');
?>

  Ответить  
 
 автор: Sirius1981   (18.08.2008 в 18:33)   письмо автору
 
   для: BinLaden   (18.08.2008 в 18:05)
 

Ну это не совсем что я ищу вот мои код:

function string2hex($str){
if (trim($str)!=""){
$hex="";
$length=strlen($str);
for ($i=0; $i<$length; $i++){
if ($i>0) $bound="-"; else $bound="";
$hex.=$bound.str_pad(dechex(ord($str[$i])), 2, 0, STR_PAD_LEFT);
}
return $hex;
}
}

$str = string Bukwi

Мне надо тепер этот hex обратно в string переконвертироват

  Ответить  
 
 автор: Trianon   (18.08.2008 в 18:51)   письмо автору
 
   для: Sirius1981   (18.08.2008 в 18:33)
 

Этот Ваш сюрр на 10 строк записывается в одну:
function string2hex($str) {return wordwrap(bin2hex($str), 2, '-', 1);}

Обратно в string, как и писал BinLaden, с помощью pack
echo $s = '61-62-63-31-32-33'; // abc123 
pack('H*', str_replace('-', '', $s));

  Ответить  
 
 автор: sirius1981   (19.08.2008 в 12:04)   письмо автору
 
   для: Trianon   (18.08.2008 в 18:51)
 

Слушаите, а откуда эта функция zнает 4то мне hex в string перещести надо. Mы же как парамнетер передатё толъко H как параметер. Я прочёл об етои функции тут http://de.php.net/manual/en/function.str-replace.php и не понял как она переводит из hex в string . мосчете пожалуйсто обяснит?
Да кстате спасибо функция работает

  Ответить  
 
 автор: BinLaden   (19.08.2008 в 13:40)   письмо автору
 
   для: sirius1981   (19.08.2008 в 12:04)
 

Эта функция переводит данные из разных форматов в бинарные. Передать "H" достаточно, потому что это и обозначает HEX-строку с старшими четырями битами (high nibble) в начале.

  Ответить  
 
 автор: Sirius1981   (19.08.2008 в 16:13)   письмо автору
 
   для: BinLaden   (19.08.2008 в 13:40)
 

Est w php podobie funk4iie c++ isspace()
A to mne nado s4itiwat takuju stroku: F601190025 Drill stand abc;
i eto dolsno tak wigljadet:

vat1="F601190025 ";
var2="Drill stand ";
var3="abc";

  Ответить  
 
 автор: BinLaden   (19.08.2008 в 17:28)   письмо автору
 
   для: Sirius1981   (19.08.2008 в 16:13)
 

Не совсем понятно, как Вы хотите отличать конец строки, которую Вы запихнули в var2 и начало другой (она в var3)?

  Ответить  
 
 автор: Sirius1981   (19.08.2008 в 17:41)   письмо автору
 
   для: BinLaden   (19.08.2008 в 17:28)
 

A raslezit ja ich mogu tem 4to meschdu slowami est tab '\t'
t.e

0601190025 Drill stand abc

  Ответить  
 
 автор: BinLaden   (19.08.2008 в 17:48)   письмо автору
 
   для: Sirius1981   (19.08.2008 в 17:41)
 

<?php
print_r
(explode("\t""0601190025\tDrill stand\tabc"));
?>


А что будете делать, если понадобится сохранить текст с этим символом (табуляция)?

  Ответить  
 
 автор: Sirius1981   (19.08.2008 в 17:57)   письмо автору
 
   для: BinLaden   (19.08.2008 в 17:48)
 

Spasibo.
Simwoli tabuljazii ne ponadobjatsja - meschdu slowami wsegda est probel a meschdu kolonkami simwol tabuljazii. Tolko pripomoschi taboljazii ja mogu rasposnat konez stobza is xy.txt faila

  Ответить  
 
 автор: Sirius1981   (03.09.2008 в 21:22)   письмо автору
1.7 Кб
 
   для: BinLaden   (19.08.2008 в 17:48)
 

Priwet wsem!!! U menja nowaja problema.


problema w tom, 4to ja sadaju text: "привет как дела " perewoschu ego w hex polu4enii resultat pereedaju na printer (w ZPL_2) polu4aju w pesultate: "привет как ела " po4emu

Moschete gljanut moschet kto uweidet oschibku??? Ja dumaju wsja problema w finkzii :

function string2hex($str) {return wordwrap(bin2hex($str), 2, '-', 1);}


Code ja posilaju tosche.
Spasibo saranie.

  Ответить  
 
 автор: BinLaden   (03.09.2008 в 22:51)   письмо автору
 
   для: Sirius1981   (03.09.2008 в 21:22)
 

Проблема точно не в функции. Она проста как апельсин.

  Ответить  
 
 автор: sirius1981   (04.09.2008 в 14:17)   письмо автору
 
   для: BinLaden   (03.09.2008 в 22:51)
 

Nu a w4jem togda problema to?

  Ответить  
 
 автор: Trianon   (04.09.2008 в 15:09)   письмо автору
 
   для: sirius1981   (04.09.2008 в 14:17)
 

В обоих файлах "привет как дела" читается вполне отчетливо.
В отличие от файла.php ... и от большинства ваших сообщений здесь.

  Ответить  
 
 автор: Sirius1981   (04.09.2008 в 17:31)   письмо автору
 
   для: Trianon   (04.09.2008 в 15:09)
 

я наверно не совсем коректно описал мою, проблему поробую ещё раз:
-Так вот: в _.тхт фаилах всё класно, всё отлчино, Explorer тоже всё ок. Проблема начинается когда я полу4иное hex-зна4ние строчки копирую и передаю в ZPL2. Принтер выдаёт на лебеле фигню как я и говорил - глотает буквы и делает пробели которых недолжно бытъ. В4ём может быть проблема????

  Ответить  
 
 автор: BinLaden   (04.09.2008 в 17:42)   письмо автору
 
   для: Sirius1981   (04.09.2008 в 17:31)
 

Где-то в принтере, шрифтах, где-то там еще...Но явно не в скрипте.

  Ответить  
 
 автор: Sirius1981   (04.09.2008 в 19:26)   письмо автору
 
   для: BinLaden   (04.09.2008 в 17:42)
 

Kto-to est kto rasberaetsja w ZPL2 i w Zebra printerach?

  Ответить  
 
 автор: Sirius1981   (05.09.2008 в 19:28)   письмо автору
17.5 Кб
 
   для: Sirius1981   (04.09.2008 в 19:26)
 

Так вроде бы проблему я локализировал. Но как поступит не совсем знаю.

Вот смотрите:
- опятьже у меня XSL -ехcелещскии фаил в нём арабкие слова.
-ок я как узнал из форума - я не могу просто так работат в PHP с XSl. Xорошо, я взял из XSL скопировал всё например в Notepade++ или EditPlus. Сохранил это всё в Unicode BigEndian.
!!!-- Проблема, которую я заметил толко в4ера, заклю4ается в том, 4то, --- когда я из EXCEL копирую техт в текстовои редактор, скопированыи текст уже неправилно выглядит. По4ему?- незнаю..........
Решением проблемы как мне показалос лу4ше всего закинут XSL фаил в PHP, но кроме XSL естъ так называемыи DIF. 4то из этих форматов лутше? Могут ли они оба работать с UNICODE с CSU-2? A moschno kakto sakinut Wordowskii fail w PHP?
-Блин как я задолбался с этими арабским шрифтом.....

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования