У меня ест ьподзрение такое гадкое, что твоя программа работает, а выполнять ничего н евыполняет.замена char на wchar_t не помогла - тоже самое
смотрел в wath window считывается в wchar_t бред и этот же бред записывается в выходящий файл, хотя мазила всё норм читает - блокнот мажется и файл открывает как пустой
наверное он открывает файл с кодировкой UTF-8 как файл c другой кодировкой
грррр как в C++ поставить в атрибутах исходящего файла, что он написан в кодировке юникода??
VS6 компилятор поддерживает нормальное чтение из Юникода? Именно стандартным <stdio.h>? Хотя в принцыпе это не существенно если работа идёт с Английскими символами. Эти по-моему корректно везде распознаваться должныЛистинг кванта компилится и отлично работает (VS6). Единственное - я б посоветовал проверять результат выполнения
in = fopen ("index.htm", "r");
потому как если файла не существует то он не создастся как при
ou = fopen ("new.index.htm", "w");
в резуьтате имеем конфуз при попытке читать из in:
l = fgetc (in);
вот ссыль на проблемму блокнота с юникодом
You must be registered for see links
#define LOWER_6_BIT(u) ((u) & 0x003f)
#define BIT7(a) ((a) & 0x80)
#define BIT6(a) ((a) & 0x40)
// Converts UTF-8 to unicode
// -------------------------
// lpSrcStr Points to UTF8 encoded string
// cchSrc Length of UTF8 string
// lpDestStr Points to output buffer
// cchDest Number of bytes in output buffer
int UTF8ToUnicode (char *lpSrcStr, int cchSrc, wchar_t *lpDestStr, int cchDest)
{
int nTB = 0;
int cchWC = 0;
char *pUTF8 = lpSrcStr;
char UTF8;
while ((cchSrc--) && ((cchDest == 0) || (cchWC < cchDest)))
{
if (BIT7(*pUTF8) == 0)
{
if (cchDest)
lpDestStr[cchWC] = (wchar_t)*pUTF8;
cchWC++;
}
else if (BIT6(*pUTF8) == 0)
{
if (nTB != 0)
{
nTB--;
if (cchDest)
{
lpDestStr[cchWC] <<= 6;
lpDestStr[cchWC] |= LOWER_6_BIT(*pUTF8);
}
if (nTB == 0)
cchWC++;
}
}
else
{
if (nTB > 0)
{
nTB = 0;
cchWC++;
}
else
{
UTF8 = *pUTF8;
while (BIT7(UTF8) != 0)
{
UTF8 <<= 1;
nTB++;
}
if (cchDest)
lpDestStr[cchWC] = UTF8 >> nTB;
nTB--;
}
}
pUTF8++;
}
return cchWC;
}
const wchar_t math[]={L"ktv"}, zamena[]=(L"vip");
wchar_t l;
int counter = 0, cc = 0, leng = (sizeof(math) >> 1) - 1, zleng = (sizeof (zamena) >> 1) - 1, j;
набери в осле bcppТоварищи, нужен Borland C++ (не Builder) с досовским интерфесом.
Оболочка очень похожа на паскалевскую. Буду очень благодарен.
Может проблемма в "дефолтной" кодировке? Я точно не помню, но кажись у gcc какая-то привязка есть к системной кодировке. Посмотри этот момент. Может там тебе ничего даже конвертировать не нужно будеталгоритм робочий! не юникод лапатит на ура - на Windows, скомилировал gcc на Ubuntu - нифига не делает
страничку берёт, шото с ней делает, а на выходе точно такая же