[ID CC2022] Перестал работать скрипт

Chiga

15 лет на форуме
Сообщения
802
Реакции
519
похоже дело в кодировке. Я преобразовал (вроде бы) основную часть .ps кода (во внешнем файле) и txt файл с основой для штрих-кода в UTF-16 LE BOM и файлы начали писаться, но почему-то результирующий .ps файл имеет кодировку ANSI
подскажите пожалуйста, как правильно задать "UTF-16 LE BOM" в скрипте?
пока в коде стоит file.encoding = "UTF-8"; работает, но наверное это не правильно
Верните все назад и попробуйте

Код:
function WriteToFile(myText) {

//var folderPath = "D:/temp/temp/"
var success = Folder(psFolder).create(); //

myFile = new File(psFolder + "/" + BarcodeBaze + " " + psFile + ".ps");
if ( myFile.exists ) {
exit;
}
else {
myFile.encoding = "ASCII";
myFile.open("w");
}
myFile.write(myText);
myFile.close();
}


file.encoding = "ASCII";
 
  • Спасибо
Реакции: mnemonix и Gad

DrEgor

Участник
Топикстартер
Сообщения
774
Реакции
68
промежуточные итоги:
в рабочей версии (старый ID)
- основа .ps в UTF-8
- база штрихкода в UTF-8
- результирующий файл .ps почему-то в кодировке Windows-1251
но это работает. Файл втягивается в ID и правильно отображается.

в более новых версиях с теми-же исходными данными результирующий файл "нулевого" размера
потому, меняем кодировку базы штрихкода на UTF-8-BOM и все начинает работать :)

Ура! Всем спасибо.

p.s. вот теперь я готов обсуждать как это дело сделать проще/удобнее/правильнее.
Как я уже сказал выше - наверное стоит читать какой-то готовый файл, в нужной строке находить и заменять цифры
уже не помню почему я пошел другим путем, наверное не смог осилить поиск/замену

1709200826295.png
 

DrEgor

Участник
Топикстартер
Сообщения
774
Реакции
68
Я так же далек от понимания того, как формируется myText, как и до вашего ответа. :(
Уточняю вопрос: как формируются переменные BarcodeMain,LastLineStart,BarcodeBaze,psFile,LastLineEnd? Их скрипт заполняет или читает откуда?
по разному, где-то определяется, как например

var LastLineStart = "6 3 moveto .67 .67 scale (";

где-то это берется построчно из внешнего файла
BarcodeMain += file.readln() + "\n";
скрипт проверяет какого типа нужен штрихкод, сколько штук для каждой базы, какого типа дополнительный штрихкод (если нужен например год)...

Спасибо, но по сути проблему я решил - дело было в кодировке основной части кода который берется из внешнего файла - ему нужна кодировка UFT-8-BOM, а не просто UTF-8 как было изначально.
 

DrEgor

Участник
Топикстартер
Сообщения
774
Реакции
68
Верните все назад и попробуйте

Код:
function WriteToFile(myText) {

//var folderPath = "D:/temp/temp/"
var success = Folder(psFolder).create(); //

myFile = new File(psFolder + "/" + BarcodeBaze + " " + psFile + ".ps");
if ( myFile.exists ) {
exit;
}
else {
myFile.encoding = "ASCII";
myFile.open("w");
}
myFile.write(myText);
myFile.close();
}


file.encoding = "ASCII";
пишется. но не интерпретируется
похоже все-же дело в основной части внешнего файла, у него кодировка должна быть именно UFT-8-BOM,
 

DrEgor

Участник
Топикстартер
Сообщения
774
Реакции
68
Когда все и во всю писали PostScript, UTF-8 еще не было. Что-то Вы перемудрили.
значит когда я писал - уже было :) и не сколько для PostScript, сколько для js
UTF-8 был нужен, чтобы можно было использовать кириллицу в названиях журналов (во внешнем txt файле).