Символы мусора после обновления web.config с использованием c # на китайской (традиционной) машине - PullRequest
0 голосов
/ 15 января 2019

Я обновляю файл web.config Asp.net mvc динамически во время установки, используя скрипт installshiled.

Работает корректно на всех машинах; однако это генерирует ??? charaters на китайской машине в начале файла web.config, как показано ниже.

???<?xml version="1.0" encoding="utf-8"?>

Пожалуйста, предложите, как эта проблема может быть, пожалуйста.

Ниже приведен код Installshield

Используя installscript, я нахожу заполнитель строки подключения и заменяю его строкой подключения, сгенерированной во время установки.

szIniFile = INSTALLDIR^"AppDir\\Web.config";
szSearchStr = "[COONECTIONSTRING]";
FindAndReplaceInFile(szIniFile, szSearchStr,strWebConString);


function FindAndReplaceInFile(szFile, szSearchStr,szReplaceStr)
    STRING szReturnLine,szString, szSecPart,szFirstPart,svString,szArchive;
    NUMBER  nResult,nSubPos,nSearchStrLen,nLineNumber;   
    begin     
   nSearchStrLen = StrLength(szSearchStr); 
   nResult=FileGrep (szFile, szSearchStr, szReturnLine, nLineNumber, 
   RESTART) ;

   NumToStr ( svString, nResult ); 

   while (nResult=0)    
        nSubPos    = StrFind(szReturnLine, szSearchStr);    //get position of szSearchStr
        StrSub (szFirstPart, szReturnLine, 0, nSubPos);         
        StrSub (szSecPart, szReturnLine, nSubPos+nSearchStrLen, StrLength(szReturnLine));
        szString="";
        szString = szFirstPart+szReplaceStr+szSecPart;
        FileInsertLine (szFile, szString, nLineNumber, REPLACE);
        nLineNumber = nLineNumber + 1;
        nResult=FileGrep (szFile, szSearchStr, szReturnLine, nLineNumber,CONTINUE) ;

    endwhile; 
end;

1 Ответ

0 голосов
/ 15 января 2019

У вас был маркер порядка байтов (BOM) в начале файла.

Я подозреваю, что вы открыли файл в кодировке UTF8 в другой кодировке. Это неправильно прочитало ненужную спецификацию и повредило ее. Когда вы его сохранили, маркеры неизвестных персонажей заменили спецификацию.

Чтобы исправить это, вам необходимо закодировать вашу конфигурацию как UTF8 без спецификации. Редактирование должно быть безопасным, если в вашем файле нет других символов вне диапазона ASCII.

...