1

我想将我的 Visual Studio 项目从 MBCS 转换为 Unicode CS。但是我的源代码中有 900 个 const char 数组,有没有自动的方法呢?一行一行地做很多事情。在这样做时,我指的是将 _T("asd") 添加到“asd”。

4

2 回答 2

2

没有办法解决这个问题。

字符串文字被解释/编码为“char *”,除非您L用来告诉编译器始终将其编码为 Unicode(WCHAR/宽字符串),或者您使用_T宏对其进行编码,具体取决于“字符集”是否为设置为 ANSI/MBCS 或 Unicode..

您可能很想使用“文件 | 高级保存选项”将源文件的编码更改为 Unicode...认为这将改变您的字符串文字的编码方式...但不...它们仍将被视为窄弦。

一些可能有助于理解选项的链接。


最好的办法是在 Visual Studio 中编写一个可以运行的“宏”,它将遍历包含字符串文字的源代码文件集,并将_T( )orL前缀添加到这些字符串。

您制作宏的复杂程度取决于您...但是应该可以让宏与字符串进行模式匹配,然后要求您确认是否为字符串文字添加前缀/包装(使用 L 或 _T( ))....因为您不想转换源中的所有字符串...因为有些需要保留为窄字符串。


另一种选择是您可以使用“查找”对话框查找字符串,然后直观地查看它们是否需要修改并手动进行修改。


最后,您也许可以利用“翻译工具”,它遵循“就地本地化替换源文件中的字符串,然后重新编译”本地化技术(而不是“将字符串提取到资源”技术.. .这是更常见的一种)。我知道有这样的工具,可以从源文件中提取字符串...建立这些字符串的表/数据库...然后被翻译,然后重新插入....(实际上我写了一些东西过去这样做)。也许你可以找到一个工具来做到这一点......但稍微修改它以在插入字符串时插入 L 前缀。

事实上,如果您不厌其烦地使您的应用程序成为 Unicode...那么我想在某些时候您将打算支持您的应用程序的不同本地化...所以您可以做的就是将所有字符串移动到资源...并且资源将它们保存为 Unicode...您必须修改代码才能从资源等中加载字符串。

于 2012-09-05T00:53:47.350 回答
0

我做了一个正则表达式替换,我在 VIM 中使用它在一个混合了“abc”、_T(“abc”) 和其他字符串的大型项目中执行此操作:

:%s/\([^T][^(L]\)"\([^"()]*\)"/\1_T("\2")/g

然后我使用版本控制 (TortoiseSVN-diff) 来查看更改,并在必要时恢复它们。YMMV,但这是我项目中最快的选择。

于 2016-01-25T19:01:10.867 回答