|
и снова кодировка текстового файла | ☑ | ||
---|---|---|---|---|
0
igel1969
22.06.17
✎
12:43
|
Здравствуйте!
я уж и СП посмотрел, и форумы прошерстил - везде один и тот же ответ - при записи устанавливать тип файла. Ну, устанавливаю я, не идиот же: Текст = Новый ТекстовыйДокумент; Текст.УстановитьТипФайла("windows-1251"); ИмяФайла = "2344_" + Формат(Дата, "ДФ=гггг") + "-" + Формат(Дата, "ДФ=ММ") + "-" + Формат(Дата, "ДФ=дд") + ".csv"; Текст.ДобавитьСтроку("OPERATION_DATE;AMOUNT;TRANSACTION_ID;INVOICE_ID;PAYMENT_TYPE;TICKET_ID;TERMINAL_ID;GATE_TRANSACTION_ID"); Пока Результат.Следующий() Цикл ДатаСтр = МойФормат(НайтиЗначениеПараметра(Результат.Приложение, "TICKET_REGISTRATION_TIME")); СуммаСтр = Формат(Число(НайтиЗначениеПараметра(Результат.Приложение, "PRICE_RETURNED")) / 100, "ЧДЦ=2; ЧРД=.; ЧГ=0"); Транзакция = НайтиЗначениеПараметра(Результат.Приложение, "EXTERNAL_TRANSACTION_ID"); Инвойс = ""; ТипПлатежа = "zemlianuhin"; Билет = НайтиЗначениеПараметра(Результат.Приложение, "TICKET_ID"); Терминал = НайтиЗначениеПараметра(Результат.Приложение, "TERMINAL_ID"); Гейт = ""; Текст.ДобавитьСтроку(ДатаСтр + ";" + СуммаСтр + ";" + Транзакция + ";" + Инвойс + ";" + ТипПлатежа + ";" + Билет + ";" + Терминал + ";" + Гейт); КонецЦикла; Текст.Записать(Кат + ИмяФайла, "windows-1251"); Но все-равно, открываешь потом файл, например, программой Notepad++ и в правом нижнем углу показывает кодировку UTF-8, да и заказчик тоже присылает письмо, что это UTF-8, а ему надо Win1251. Подскажите, пожалуйста, в чем дело??????? |
|||
1
quest
22.06.17
✎
12:55
|
пробуй не строку передавать, а явно КодировкаТекста.ANSI
|
|||
2
igel1969
22.06.17
✎
12:56
|
(1) а ANSI и 1251 - это одно и то же?
|
|||
3
igel1969
22.06.17
✎
12:59
|
(1) нет, то же самое (только заказчику не отправлял).
попробую по-другому сформулировать - а как точно посмотреть кодировку файла? может мне программа notepad++ врет? |
|||
4
Cyberhawk
22.06.17
✎
13:00
|
"как точно посмотреть кодировку файла?" // Никак - нет такого понятия
|
|||
5
quest
22.06.17
✎
13:02
|
В фаре открой на просмотр и играйся кодировками пока не видишь свои русские буквы.
|
|||
6
quest
22.06.17
✎
13:02
|
(4) поддержу
|
|||
7
Адинэснег
22.06.17
✎
13:08
|
а если
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8, , Истина); ТекстФайла = "текст"; ЗаписьТекста.ЗаписатьСтроку(ТекстФайла); ЗаписьТекста.Закрыть(); |
|||
8
Адинэснег
22.06.17
✎
13:08
|
ну то есть
ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаПротокола, КодировкаТекста.ANSI, , Истина); ТекстФайла = "текст"; ЗаписьТекста.ЗаписатьСтроку(ТекстФайла); ЗаписьТекста.Закрыть(); |
|||
9
igel1969
22.06.17
✎
13:18
|
(8) я с этого начинал, не получилось. потом на всякий случай перешел к ТекстовомуДокументу, так как все примеры были на нем.
|
|||
10
igel1969
22.06.17
✎
13:19
|
ладно, отправил заказчику следующее письмо:
Добрый день, Сергей. Вот файл. Несмотря на одинаковые названия, это новый файл, я сгенерировал его только что. Я уверен, что этот файл в кодировке windows-1251. Но Notepad++ все-равно показывает UTF-8. Текстовый редактор Notepad++ не умеет правильно определять кодировку. Для примера можно сделать следующее: создать файл в Notepad++ в кодировке windows-1251, ввести какой либо текст и сохранить. Потом обязательно ЗАКРЫТЬ этот файл, а затем заново открыть. Если в тексте были только латинские буквы (кроме цифр), то Notepad++ покажет Вам кодировку UTF-8, а если были еще и русские, то покажет ANSI. Я смотрю во встроенном просмотрщике Тотал-командера, мне показывает windows-1251. Жду ответа. |
|||
11
Zyka
22.06.17
✎
13:19
|
Ф = ПолучитьИмяВременногоФайла("csv");
ТД = Новый ТекстовыйДокумент; ТД.УстановитьТипФайла(КодировкаТекста.ANSI); ТД.ДобавитьСтроку("строка"); ТД.ДобавитьСтроку("строка2"); ТД.Записать(Ф, КодировкаТекста.ANSI); Сообщить(Ф); NPP показывает: Windows-1251 |
|||
12
Zyka
22.06.17
✎
13:20
|
P.S.
При открытии NPP в правом нижнем углу отображается текущая кодировка. |
|||
13
igel1969
22.06.17
✎
13:25
|
(11) а если то же самое, но без русских букв? только на латинице?
|
|||
14
Господин ПЖ
22.06.17
✎
13:38
|
автор у тебя в руках мухи долбятся...
латинца "прозрачна" для utf-8 и ansi. там коды одинаковые |
|||
15
Zyka
22.06.17
✎
13:39
|
Как Windows-1251 может содержать русские символы?
https://ru.wikipedia.org/wiki/Windows-1251 Блок: Кодировка Windows-1251 (синоним CP1251) Возможно что-то путаю. |
|||
16
igel1969
22.06.17
✎
13:44
|
ну ладно, если я все делаю как в моем куске программы, я могу сказать заказчику что файл ТОЧНО, 100% в кодировке windows-1251 ????? А его Notepad++ можно выкинуть на помойку, потому что он не умеет определять кодировку?
|
|||
17
Has
22.06.17
✎
14:19
|
может прогой Штирлиц посмотреть?
|
|||
18
1dvd
22.06.17
✎
14:24
|
(16) Точно нет русских букв? Посылай в пень. Однобайтовые кодировки все одинаковые для символов до 80h
|
|||
19
бомболюк
22.06.17
✎
14:38
|
может там BOM стоит?
|
|||
20
bolder
22.06.17
✎
14:46
|
(10) NPP показывает текущую кодировку верно.100% подтвердаю.
А вот перекодирование в нем не получится,возможно это баг или фича))Так что не гони пургу заказчику. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |