преобразование html entity в буковки и обратно
От: dalai lamer Россия  
Дата: 22.12.03 08:35
Оценка:
Привет.

Мне нужно (при сабмите формы) преобразовывать полученные html entities, которые прислал броузер, в буквы. Собирался писать сам, но увидел здесь ссылку

http://people.comita.spb.ru/users/sergeya/java/ruschars.html#xml

и попытался на сайте

http://xml.apache.org/xerces2-j/api.html

поискать этот XMLSerializer (org.apache.xml.serialize) но чё-та не нашел.

Поэтому вопросы: можно ли ссылку на этот пакетик (при этом мне нужно только преобразовывать стримы, а остальное про xml мне не нужно) и будет ли этот сериалайзер только энтитисы мне менять или он еще что-то делает.

Соответственно нужна и обратная функция — преобразовать текст в юникоде в текст в указанной кодировке с заменой на энтити тех букв которых нет в этой кодировке.

Спасибо!
Re: преобразование html entity в буковки и обратно
От: Nicht Россия  
Дата: 22.12.03 09:15
Оценка:
Здравствуйте, dalai lamer, Вы писали:

DL>Привет.


DL>Мне нужно (при сабмите формы) преобразовывать полученные html entities, которые прислал броузер, в буквы. Собирался писать сам, но увидел здесь ссылку


DL>http://people.comita.spb.ru/users/sergeya/java/ruschars.html#xml


DL>и попытался на сайте


DL>http://xml.apache.org/xerces2-j/api.html


DL>поискать этот XMLSerializer (org.apache.xml.serialize) но чё-та не нашел.


DL>Поэтому вопросы: можно ли ссылку на этот пакетик (при этом мне нужно только преобразовывать стримы, а остальное про xml мне не нужно) и будет ли этот сериалайзер только энтитисы мне менять или он еще что-то делает.


DL>Соответственно нужна и обратная функция — преобразовать текст в юникоде в текст в указанной кодировке с заменой на энтити тех букв которых нет в этой кодировке.


DL>Спасибо!


На сколько мне известно этот такет находится в продукте xalan. Это XSLT процессор. Только не в том, что входит в jdk1.4.1 а xalan2.5.2 Его на сайте апача скачать можно. Но когда я пытался его использовать у меня возникла проблемма. А стандартный работает нормально.
Re: преобразование html entity в буковки и обратно
От: Blazkowicz Россия  
Дата: 22.12.03 09:22
Оценка:
Здравствуйте, dalai lamer, Вы писали:

DL>Мне нужно (при сабмите формы) преобразовывать полученные html entities, которые прислал броузер, в буквы. Собирался писать сам, но увидел здесь ссылку

DL>http://people.comita.spb.ru/users/sergeya/java/ruschars.html#xml
DL>и попытался на сайте
DL>http://xml.apache.org/xerces2-j/api.html
DL>поискать этот XMLSerializer (org.apache.xml.serialize) но чё-та не нашел.
DL>Поэтому вопросы: можно ли ссылку на этот пакетик (при этом мне нужно только преобразовывать стримы, а остальное про xml мне не нужно) и будет ли этот сериалайзер только энтитисы мне менять или он еще что-то делает.
DL>Соответственно нужна и обратная функция — преобразовать текст в юникоде в текст в указанной кодировке с заменой на энтити тех букв которых нет в этой кодировке.

1) Как-то ты не внимательно читал. Пакет называется Xerces. Там в начале абзаца это написано.
2) Он не предназначен для того чтобы перекодировать запросы.
3) Для есть классы URLEncoder/URLDecoder.
4) Кроме этого существуют отличные framework'и для вэб-приложений, например Struts.
Re[2]: преобразование html entity в буковки и обратно
От: dalai lamer Россия  
Дата: 22.12.03 09:55
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Здравствуйте, dalai lamer, Вы писали:


DL>>Мне нужно (при сабмите формы) преобразовывать полученные html entities, которые прислал броузер, в буквы. Собирался писать сам, но увидел здесь ссылку

DL>>http://people.comita.spb.ru/users/sergeya/java/ruschars.html#xml
DL>>и попытался на сайте
DL>>http://xml.apache.org/xerces2-j/api.html
DL>>поискать этот XMLSerializer (org.apache.xml.serialize) но чё-та не нашел.
...
B>1) Как-то ты не внимательно читал. Пакет называется Xerces. Там в начале абзаца это написано.

а че же я тогда на xml.apache.org/xerces2-j/api.html полез??

B>2) Он не предназначен для того чтобы перекодировать запросы.

B>3) Для есть классы URLEncoder/URLDecoder.

да мы все не очень внимательны. мне не запросы и урлы декоировать надо. УРЛДеокдер делает это

To conversion process is the reverse of that used by the URLEncoder class. It is assumed that all characters in the encoded string are one of the following: "a" through "z", "A" through "Z", "0" through "9", and "-", "_", ".", and "*". The character "%" is allowed but is interpreted as the start of a special escaped sequence.


про entities здесь ни слова. мне нужно как сказано в твоей ссылке:

русские буквы будут представлены в виде кодов, типа такого: "АБВ" для символов "АБВ".


B>4) Кроме этого существуют отличные framework'и для вэб-приложений, например Struts.


Я свой struts пишу

Памаги плз!
Re[3]: преобразование html entity в буковки и обратно
От: Blazkowicz Россия  
Дата: 22.12.03 10:47
Оценка:
Здравствуйте, dalai lamer, Вы писали:

DL>да мы все не очень внимательны. мне не запросы и урлы декоировать надо. УРЛДеокдер делает это


DL>про entities здесь ни слова. мне нужно как сказано в твоей ссылке:


DL>

DL>русские буквы будут представлены в виде кодов, типа такого: "АБВ" для символов "АБВ".

DL>Я свой struts пишу

Ааа... это. Сорри.

Ну, я бы на твоём месте на Xerces не надеялся, а писал свою имплементацию.
Потому как не известно на сколько хорошо он ресолвит все HTML ентити. А во вторых классы, которые это делают могут оказаться недоступны для использования, а так же недокументированны.
Re[4]: преобразование html entity в буковки и обратно
От: dalai lamer Россия  
Дата: 30.12.03 11:22
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

DL>>

DL>>русские буквы будут представлены в виде кодов, типа такого: "АБВ" для символов "АБВ".


DL>>Я свой struts пишу


B>Ну, я бы на твоём месте на Xerces не надеялся, а писал свою имплементацию.

B>Потому как не известно на сколько хорошо он ресолвит все HTML ентити. А во вторых классы, которые это делают могут оказаться недоступны для использования, а так же недокументированны.

Ну вот взялся сам писать эту штуку и понял что не знаю как лучше.

Это получается такой интерпретатор налету.

Вопрос 1 — какие классы делать.

Идея в следующем. Какой бы мы не сказали content type — encoding в нашем сервлете, пользователь не должен увидеть вопросительных знаков. В случае если этой буквы нет в этой кодировке — выводим энтити, и умный экспролер показывает умляуты и все остальное.

То есть для вывода в броузер нужно (удобно) сделать обертку того outputstream, в который я все время делаю print (out.print). Правильно ли я мыслю?

Обратный процесс. Пользователь в форме набрал что-то на иврите, экспролер, видя, что страница в русской кодировке, превращает это в энтити (так они и делает, это правда). Но в сервлет и далее в базу это должно попасть как нормальный юникод. Значит, нужно делать обертку для HttpServletRequest, который будет отлавливать энтити и превращать их в нормаьлные буквы.

Смущает меня что мы в одном случае делаем свой аутпут стрим, а в другом свой какой-то хттпреквест, то есть перехватываем это дело на разных уровнях, к тому же для разбора энтитей привязываемся к какому-то там http. Плюс — хттпРеквест у меня и так уже обернут для расзбора multipart requests (слыхал что в новом SDK это уже встроено, но у меня тогда не было).

А если делать input stream, то как подсунуть этот инпут стрим сервлету...

Вопрос 2. — как собственно это делать, чтобы оно работало быстро.

Стринг Токенайдером? Стрим Токенайзером, который я ваще не понимаю как работает (типа он разбирает джава код, ни на что другое его не настроить (?)) Или побайтно/почарно, то есть делать все-таки обертку стримов, поскольку там это будет удобнее всего?

Уххх.

Ладно, сам подумаю, не заморачивайтесь

dalai
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.