首页 > 解决方案 > 无法将 Unicode(希腊语)字符保存到文件中

问题描述

我在将 Unicode (Greek) 字符保存到文件时遇到问题,问题是当程序的写入函数到达 CString 的希腊字符时。我保存英文字符没有问题。

我不知道我的代码哪里做错了。

提前致谢。

这是我的代码

void CCheckOmadesOroiDlg::SaveLathoiToFile()
{
CStringW sf;
CStringW str_to_save = L"";


str_to_save = L"Nikitria stili ";

for (int i = 0; i < 6; i++)
{
    sf.Format(L"%d ", exada.vExades[geydomada].number[i]);
    str_to_save += sf;
}

sf = L"\n\n";
str_to_save += sf;
sf.Format(L"Λαθοι Ομαδων απο=%d μεχρι=%d (%d)\n", glathoi.lathoiomadon_apo, glathoi.lathoiomadon_mexri, glathoi.lathoiomadon);
str_to_save += sf;

CString filename; filename.Format(_T("lathoi_%d.txt"), geydomada);
wofstream file(filename, ios::out);
streamsize n = str_to_save.GetLength()*sizeof(WCHAR);
file.write(str_to_save, n);
file.flush();
file.close();

}

标签: c++visual-studio

解决方案


我找到了另一种将 Unicode 字符写入文件的方法。

这是代码。

void CCheckOmadesOroiDlg::SaveLathoiToFile()
{
CStringW sf;
CStringW str_to_save = L"";

str_to_save = L"Nikitria stili ";

for (int i = 0; i < 6; i++)
{
    sf.Format(L"%d ", exada.vExades[geydomada].number[i]);
    str_to_save += sf;
}

sf = L"\n\n";
str_to_save += sf;
sf.Format(L"Λαθοι Ομαδων απο=%d μεχρι=%d (%d)\n", glathoi.lathoiomadon_apo, glathoi.lathoiomadon_mexri, glathoi.lathoiomadon);
str_to_save += sf;


wchar_t* bufferwchar = new wchar_t[str_to_save.GetLength()];
bufferwchar = (wchar_t*)str_to_save.GetBuffer();

char filename[50]; sprintf_s(filename, "lathoi_%d.txt", geydomada);
FILE *stream;

// Open file in text mode:
if (fopen_s(&stream, filename, "wt,ccs=UNICODE") == 0)
{

    fwrite(bufferwchar, sizeof(bufferwchar), str_to_save.GetLength()/2, stream);
    fclose(stream);
}
}

推荐阅读