Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / BOM при сохранении кодировки utf-8 / 19 сообщений из 19, страница 1 из 1
09.12.2012, 12:57
    #38071446
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Приветствую форумчане.
Прошу помощи в вопросе с перекодированием.
Написал скрипт для автоперевода при помощи сервиса bing
Изначально он был написан для перевода через copy-paste
на страничке отображалось текстовое поле и туда копировали наш перевод.
Задумалось не занимаясь копипастом работать прямо с файлом.
открыть файл - считать в текстовое поле - перевести - записать перевод.
И вот тут пошли грабли.
Файл изначально в кодировке UNIX ANSI с переносами строк 0x0A
при записи файла в массив, он перекодируется в ANSII
после прохождения через api переводчика текст становится utf-8
но при формировании результата он опять превращается в ASCII
И все бы хорошо, но при записи в файл перевода он перед переведенной строкой вставляет 3 байта BOM(не вначале файла).
\xEF\xBB\xBF - видно лишь в 16h
иногда можно увидеть и в поле перевода.

Итак вопрос как мне ПРОГРАММНО (не надо меня посылать руками конвертировать в Notepad++) удалять BOM а еще лучше вообще его не получать.
Результирующий файл должен быть лучше конечно в чистом UTF-8 без BOM либо в UNIX ANSI
не настаивать на использовании iconv и других кодировщиков в контексте "А чем Вам iconv не угодил?" без самостоятельной проверки не рекомендуется.
Извините если дерзко написал, но хочется конструктивных ответов, а не воду, которую я и так уже на протяжении дня перечитал и перепробовал. Хотя все может оказаться куда более проще либо наоборот.

Используется denwer 5.3 + eclipse
скрипт большой выкладываю так
https://www.dropbox.com/s/syy02y7vkcr6vu4/index111.rar
С ув. Антон.
...
Рейтинг: 0 / 0
09.12.2012, 17:07
    #38071583
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
если делать телодвижения через буфер, то все работает(
...
Рейтинг: 0 / 0
09.12.2012, 17:29
    #38071603
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Kreolскрипт большойХорошо что предупредили. Вряд ли найдутся желающие разбираться в _большом_ скрипте.
...
Рейтинг: 0 / 0
09.12.2012, 17:44
    #38071620
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
ну не настолько он большой, просто в 100кб не вместится.
А если бы кто подсказал куда смотреть...
...
Рейтинг: 0 / 0
09.12.2012, 19:24
    #38071665
phpz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Kreol,

Не проверял, но идея такая:

Код: php
1.
2.
$BOM = pack("CCC",0xef,0xbb,0xbf);
$text = str_replace($BOM,"",$text);
...
Рейтинг: 0 / 0
09.12.2012, 19:25
    #38071666
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Код: php
1.
Итак вопрос как мне ПРОГРАММНО (не надо меня посылать руками конвертировать в Notepad++) удалять BOM а еще лучше вообще его не получать.


Прочитать первые 4 байта и поглядеть что в них, если это БОМ, то удалить.
...
Рейтинг: 0 / 0
09.12.2012, 19:26
    #38071667
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
или 3 ли их там
...
Рейтинг: 0 / 0
09.12.2012, 21:27
    #38071707
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8

прикрепил файл с BOm
помогите удалить.
Bom не вначале, он будет перед каждой строкой перевода
...
Рейтинг: 0 / 0
09.12.2012, 21:39
    #38071714
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Kreol,

Это 13603065 не работает?
...
Рейтинг: 0 / 0
09.12.2012, 22:14
    #38071729
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Код: php
1.
2.
3.
4.
$f = fopen("C:\1.po","r");
$BOM = pack("CCC",0xef,0xbb,0xbf);
$data = str_replace($BOM,"",$f);
file_put_contents('111.po', $data);


не работает.
...
Рейтинг: 0 / 0
09.12.2012, 22:22
    #38071730
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Мдяяя....
...
Рейтинг: 0 / 0
10.12.2012, 00:37
    #38071796
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
а без сарказма?
...
Рейтинг: 0 / 0
10.12.2012, 00:50
    #38071801
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Без сарказма - все плохо.
...
Рейтинг: 0 / 0
10.12.2012, 01:13
    #38071806
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
а я с этой кодтровкой не соврать сутки уже сижу, и мне уже плакать охота и отказатся от поиска решений.
...
Рейтинг: 0 / 0
10.12.2012, 01:30
    #38071813
phpz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Kreol
Код: php
1.
2.
3.
4.
$f = fopen("C:\1.po","r");
$BOM = pack("CCC",0xef,0xbb,0xbf);
$data = str_replace($BOM,"",$f);
file_put_contents('111.po', $data);


не работает.

а я с этой кодтровкой не соврать сутки уже сижу, и мне уже плакать охота и отказатся от поиска решений.
Утро вечера мудренее, а если нет то

fopen + fread + fclose = святая троица
...
Рейтинг: 0 / 0
10.12.2012, 02:50
    #38071823
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Поэкспериментировав прошу опять помощи.
Итак:
текст получает BOM вначале строки после похода на сайт за переводом.
Если после этого удалить BOM то все превращается в кракозяблики.
при открытии программой poedit.exe
...
Рейтинг: 0 / 0
10.12.2012, 02:56
    #38071825
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
файл после получки.

и скрин из poedit
...
Рейтинг: 0 / 0
10.12.2012, 10:58
    #38072017
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
Kreolфайл после получки.

и скрин из poeditТекст из прилагаемого файла - в utf-8. Ваш poedit понимает многобайтовую кодировку?
...
Рейтинг: 0 / 0
10.12.2012, 12:03
    #38072122
Kreol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BOM при сохранении кодировки utf-8
да может поддерживать http://img850.imageshack.us/img850/1839/66509683.jpg
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / BOM при сохранении кодировки utf-8 / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]