尝试将UTF-8兼容性添加到现有配置文件中

时间:2012-05-09 21:35:25

标签: utf-8

这里有我的第一个问题,请耐心等待。

我正在使用一些使用专有配置文件的软件(想想INI文件)。这些文件在程序启动时加载,数据在运行时使用。可以在运行时更改数据,并在程序关闭时更新配置文件本身。

我们一直在为我们的软件添加新的语言支持,并遇到了问题。当我们在运行时向这些配置文件提供包含非ASCII字符的数据时,配置文件无法正确识别它们,因为它们不兼容UTF-8。

我试图修改在启动时填写的FILE对象的创建,以使用ccs = UTF-8模式,我也尝试做_setmode(_fileno(fin),_O_U8TEXT);打开FILE流后调用,但两次尝试都会导致以下断言:

File: fgets.c
Line: 75

Expression: ( (_Stream->_flag & _IOSTRG) || 
((_textmode_safe(_fileno(_Stream)) == _IOINFO_TM_ANSI) && 
!_tm_unicode_safe(_fileno(_Stream))))

更奇怪的是,这个断言似乎源于

_VALIDATE_STREAM_ANSI_SETRET(stream, EINVAL, retval, NULL);

在fgets.c中的行,它被#ifndef _UNICODE块包围,我为我的项目定义了_UNICODE。

任何有关解决此问题以便通过_setmode或ccs模式标志获得UTF-8兼容性的任何见解都将不胜感激。

感谢。

0 个答案:

没有答案