Перейти к содержимому

Фото
- - - - -

Проблема 3х языков


  • Вы не можете создать новую тему
  • Please log in to reply
38 ответов в этой теме

#1 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 30 августа 2007 - 20:38

Задача такая: сделать скрипт, который через форму отсылает на эл.почту сообщение. Важно, чтобы как в письме, так и на самой веб-странице (после отсылки сообщения, в поле формы) корректно отображались одновременно символы трех языков: эстонского, русского и английского.
Может быть я чего-то не знаю, но с этой проблемой сталкиваюсь не впервые. Как задача про волка, зайца и капусту прямо - что-то одно постоянно не работает.
Кто-то знает как решить проблему? Какие выбрать кодировки, применить методы?
Заранее благодарен за опыт!!!
  • 0

#2 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 30 августа 2007 - 20:49

UTF-8 спасёт мир.
  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#3 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 30 августа 2007 - 22:00

почему-то когда я ставлю в кодировку браузера утф-8, то русский шрифт отображается квадратами на странице :)
  • 0

#4 Lynx

Lynx
  • Пользователь
  • 162 сообщений
  • Откуда:Таллинн

Отправлено 30 августа 2007 - 23:24

да, меня тоже интересует.
пока только уникод спасает мир, но его не поиспользуешь на веб-странице
как быть?
  • 0

#5 Киря Веб

Киря Веб
  • Пользователь
  • 140 сообщений
  • Откуда:Tallinn, Estonia

Отправлено 30 августа 2007 - 23:46

simonsays, помимо браузера у тебя сам текст в скрипте должен быть в UTF-8 кодировке.
  • 0

#6 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 30 августа 2007 - 23:54

почему-то когда я ставлю в кодировку браузера утф-8, то русский шрифт отображается квадратами на странице :)

Потому, что:
1) Браузер должен знать, что текст ему передаётся в кодировке UTF8 (Header: Content-type: text/html; charset=utf-8) И указать непосредственно в блоке "head" html документа.
2) Передаваемый текст собственно, тоже должен быть в UTF8 (храни его в базе или где он там у тебя хранится в UTF8, пиши скрипты в UTF8, делай все страницы сайта в UTF8 - никогда не мешай на 1м сайте разные кодировки, пусть всё будет в УТФ8) если надо перекодировать из одной кодировки в другую, то юзай функцию iconv() и убедись, что одноимённое расширение загружено в PHP ;)

Удачи :)
  • 0

#7 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 00:13

iconv

или mb_string если нет первого...
  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#8 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 10:06

народ ... короче переводите в дополнительный код текст ... то есть записывайте как

\uXXXX где Х-ы это код символа в уникоде ... и будет вам счатье.

И кодировка страницы при этом побарабану!
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#9 BlackIce

BlackIce

    грозный Дон Пако

  • Пользователь
  • 313 сообщений
  • Откуда:Tallinn

Отправлено 31 августа 2007 - 10:55

CyBurglar, на кой изобретать велосипед? разве сложно все под утф подогнать? блин, даже в дримвивере можно кодировку фаилов поставить в утф, и вообще никаких проблем не будет ...
  • 0
а кули, я тоже рульный дизайнер ввв.ме2.ее

#10 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 11:09

BlackIce, при чем тут велосипед?
При чем тут дримвивер и кодировка файлов ... даже если ты поставишь он афтоматом не переведет в двубайтную нотацию ...

И даже если ты сделаешь Unicode без BOM файлы ... ты всё равно не сможешь отобразить разные кодировки на бравзере.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#11 BlackIce

BlackIce

    грозный Дон Пако

  • Пользователь
  • 313 сообщений
  • Откуда:Tallinn

Отправлено 31 августа 2007 - 13:22

CyBurglar, вот обьясни плз мне дураку, зачем на сайте разные кодировки? может я отстал от вэб тенденций?
  • 0
а кули, я тоже рульный дизайнер ввв.ме2.ее

#12 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 14:03

Давайте определимся в терминах ... кодовая страница это соотношение определеных байтов определеным символам из таблицы, кодовой таблицы. Так вот кодовые таблицы в основном ограничиваются байтами 0..255 ... однобайтные кодовые страницы.

Ну так вот люди в мире разные, системы разные и как следвие эти системы используют разные кодовые таблицы ... вот из-за этого и есть разные кодировки на сайте.

ЗЫ! Надеюсь я правильно понял смысл написаного? :)

Тфу ... вопроса
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#13 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 14:38

Ну так вот люди в мире разные, системы разные и как следвие эти системы используют разные кодовые таблицы ... вот из-за этого и есть разные кодировки на сайте.

На форуме Оперы был ? (один UTF-8 и никаких проблем с языком, от китайского до Эстонского все на одной странице могут встречаться, и в одном мыле посылаться)

Короче говоря или BlackIce прав или я тоже отстал от тенденций...

Есть ещё выход, посылать письма (как я понял именно о них речь) в виде HTML где тексты кодировались бы как

ˬˬˬˬˬ


И тогда (хотя это скорее "костыль" а не решение) при любой кодировке эти символы будут отображаться ИМЕННО так как надо даже если браузер ошибётся и поставит не ту кодировку

Сообщение изменено: Vladson (31 августа 2007 - 14:39 )

  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#14 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 14:49

Ну попробуйте сделать то о Чем вы гооврите. :)

Теория не всегда соответвует практике.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#15 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 15:03

Теория не всегда соответвует практике.

Не бывает правил без исключений, но по статистике в 99% теория не соответствует не потому что она исключение а по причине не грамотной реализации.

Ну попробуйте сделать то о Чем вы гооврите.

Делал и не раз.

И заканчивай детский сад, то что ты на меня обиделся и считаешь что я идиот (хотя я считаю что не на что было обижаться) вовсе не значит что я нифига не соображаю в программировании. (даже если я и в правду идиот)

Сообщение изменено: Vladson (31 августа 2007 - 15:06 )

  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#16 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 15:15

Vladson, ты это с чего?
Я вообще твой ник тока сегодня заметил, когда ты начал на меня пипиську дрочить :) ... так что это еще вопрос кто на кого взъелся ... да и тут тема не о том.

ЗЫ! По-теме, я говорю так как лучше сделать ... то есть явно указывать Unicode символы кодами. Это заложено в стандарт HTML и это 100% будет работать. А относительно перекодировки файлов в UTF8, то я не раз сталкивался с неправильным отображением мультибайтных символов.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#17 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 15:20

Это заложено в стандарт HTML и это 100% будет работать.

Но это не позволяет отправлять text/plain письма

А относительно перекодировки файлов в UTF8, то я не раз сталкивался с неправильным отображением мультибайтных символов.

Глюки были древних почтовых клиентов и бразуеров, сейчас с этим проблем нет НИГДЕ (только если криво реализовать конвертирование и пересылку)

Сообщение изменено: Vladson (31 августа 2007 - 15:24 )

  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#18 Setor

Setor
  • Постоялец
  • 1 890 сообщений
  • Откуда:Эстония, Таллин

Отправлено 31 августа 2007 - 15:24

ЗЫ! По-теме, я говорю так как лучше сделать ... то есть явно указывать Unicode символы кодами. Это заложено в стандарт HTML и это 100% будет работать. А относительно перекодировки файлов в UTF8, то я не раз сталкивался с неправильным отображением мультибайтных символов.

Поддерживаю. Кстати, не все почтовики (ВЕБ интерфейсы и почтовые программы) поддерживают UTF8, в отличие от браузеров, которые всегда правильно отобразят нужные коды. Но я бы всё равно работал с мультиязычным текстом в кодировке UTF8 :)

Если слать письма в UTF8, не забывайте вручную указывать в заголовках тип передаваемой информации и её кодировку, а то почтовики могут неправильно отобразить ваше письмо!
  • 0

#19 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 15:28

Вот про сегодня я и говорю

Вот тока я не заметил того, что я как-то унизил твоё достоинство или чего либо другое. Если так то извини! Бог видит, я не задавался целью как либо принизить или оскорбить тебя и всё мои посты были напрвлены в русло темы обсуждаемой в том или ином форуме и никак против личности. <_<

Надо быть проще.


ЗЫ! Я высказал своё мнение по-поводу решения проблемы ... а уже ваше дело как его интерпретировать.

ЗЗЫ! относительно плаин текста ...то его можно писать в соответвующей кодовой странице соответствуещего языка ... как делают это все "белые" люди. Тут, в теме, речь совсем о другом ... как отобразить символы из трех различных кодовых таблиц на одной HTML странице. На что я дал короткий и абсолютно исчерпывающий ответ, который вполной мере соответвует HTML стандарту.

Сообщение изменено: CyBurglar (31 августа 2007 - 15:29 )

  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#20 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 15:30

как отобразить символы из трех различных кодовых таблиц на одной HTML странице.

Я считаю это не решением а временным патчем, и считаю что в перспективе надо переходить просто на UTF
  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#21 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 15:34

Vladson, переход на УТФ ... заного весь проект переписывть ... все таблицные данные? Да и саму базу перевести в UTF8? Я не думаю что это приемлемо ... особено если проект размером в 10-20 Мб чистого кода + 3-4 Гб данных.

Не, ну я за мир во всем мире.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#22 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 15:38

Кстати, не все почтовики (ВЕБ интерфейсы и почтовые программы) поддерживают UTF8

Поддерживают ВСЕ (по крайней мере последние лет 5-6, последний раз я видел проблемы в Win9x) просто если не указать кодировку в заголовке письма то они само собой не все смогут определить какая кодировка (автоматика не везде стоит, от сюда и миф о глюках, который на самом деле продукт кривой реализации)

проект размером в 10-20 Мб чистого кода + 3-4 Гб данных.

твой вариант подошёл бы как патч

Но если

Задача такая: сделать скрипт

По этому если писать с нуля то сразу в UTF

Надо стараться отходить от методов наших дедов и стараться делать качественный софт
  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#23 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 15:40

Хватит ругаться ... давайте предоставим выбор автору темы. Если он решит склониться в одному из вариантов ... и возникнут трудности, тогда мы все применим наши знания уже в той сугубо направленной тематике. А спорить можно вечно.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#24 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 15:43

предоставим выбор автору темы.

Человек спрашивает как, наша задача сказать ему "как лучше".

Если бы у ТС хватало опыта для того чтоб сделать правильный выбор, то он просто не задавал бы этот вопрос (он бы у него даже не возник)
  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#25 ParadoxL

ParadoxL
  • Постоялец
  • 5 023 сообщений
  • Откуда:Edinburg

Отправлено 31 августа 2007 - 15:46

Тема исчерпала себя.
  • 0
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...

#26 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 31 августа 2007 - 15:54

Простой пример скрипта (использовать запрещаю, это реально опасно он имеет уязвимость и не одну)
<?php
if (isset($_POST['text'])) {
	mail($_POST['to'], $_POST['subj'], $_POST['text'], 'Content-type: text/plain; charset="utf-8"');
	header('Location: ./');
	exit;
}
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

<title>Mail</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

 <style type="text/css">p{margin:0}</style>

<form action="./" method="post">
	<fieldset><legend>Mail.</legend>
		<p><label>E-Mail:</label><br>
			<input name="to" type="text" value=""></p>
		<p><label>Subject:</label><br>
			<input name="subj" type="text" value="Subject"></p>
		<p><textarea name="text" cols="30" rows="7">Текст письма</textarea></p>
		<p><input type="submit" value="Send mail"></p>
	</fieldset>
</form>

Отправит любое мыло на любом языке (и всех языках вместе взятых)

Вот и всё, charset у страницы с формой (а у нас задача именно из формы) прописан

через форму отсылает на эл.почту сообщение

и в заголовке письма charset прописан

Для использования в реальном режиме достаточно сделать проверку полей (для избежания mail-injection) и magic_quotes (чтоб не портить письмо лишними слешами)

Теме далеко до исчерпания, очень далеко...

Сообщение изменено: Vladson (31 августа 2007 - 15:57 )

  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#27 Lynx

Lynx
  • Пользователь
  • 162 сообщений
  • Откуда:Таллинн

Отправлено 02 сентября 2007 - 01:47

так, народ, лучше покажите мне реально работающую страницу с несколькими языками (желательно самодельную, чтоб лишнего кода не было), а то у меня никак не получается :(
  • 0

#28 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 02 сентября 2007 - 03:28

Lynx, Бери редактор поддерживающий UTF-8 без BOM

Пиши в заголовок
<meta http-equiv="content-type" content="text/html; charset=utf-8">

И пиши хоть на 10-ти языках сразу. Потом откроешь и удивишься что всё нормально отображается...
  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen

#29 Акей

Акей

    Смотрит свысока

  • Постоялец
  • 2 134 сообщений

Отправлено 02 сентября 2007 - 19:34

Согласен с Владсоном и БлэкАйсом.
Подытожим:

Чтобы все работало корректно надо:
1. База в кодировке utf8, первый запрос для mysql SET NAMES 'utf8'
2. HTML и сорс код файлы сохранены в utf8
3. В HTML tege meta тоже прописана кодировка utf8:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
4. В начале PHP кода посылать следующий заголовок"
header('Content-Type: text/html; charset=utf-8');
Так как многие серверы посылают стандартную кодировку и не все корректно отображается

Если вышеописанные методы правильно применены, то никаких проблем с множеством языков не возникнет
  • 0

#30 Vladson

Vladson

    XTGamers.com

  • Постоялец
  • 1 921 сообщений
  • Откуда:Эстония, Таллинн

Отправлено 02 сентября 2007 - 22:00

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

Посылают не стандартную (а "windows-1251") и не все а только некоторые (на серваках под Apache за это отвечает mod_charset но его устанавливают далеко не все)

Всё остальное точно

SET NAMES 'utf8'

(для серверов MySQL в случае если во время компиляции было указано инное, или если вместо компиляции был взят готовый бинарник которые собирают под "latin")

2. HTML и сорс код файлы сохранены в utf8
3. В HTML tege meta тоже прописана кодировка utf8:


  • 0
Один Владсон может за...ать всех, кроме себя самого. Два Владсона могли бы за...ать абсолютно кого угодно, но Владсон единственный и неповторимый. ©Vladson

Вы либо способны перелопатить тонны информации и отсеять лишнее, либо программистом не будете. ©Psih

Не вазелин, а бизнес-гель ©Avagraen