如何在Windows上用C编写unicode hello world
发布时间:2020-12-14 02:28:28 所属栏目:Windows 来源:网络整理
导读:为了让这个工作: #define UNICODE#define _UNICODE#include wchar.hint main(){ wprintf(L"Hello World!n"); wprintf(L"£?,蠀,?!n"); return 0;} 使用visual studio 2008 express(在windows xp上,如果重要的话). 当我从命令提示符(启动为cmd / u,它应该
为了让这个工作:
#define UNICODE #define _UNICODE #include <wchar.h> int main() { wprintf(L"Hello World!n"); wprintf(L"£?,蠀,?!n"); return 0; } 使用visual studio 2008 express(在windows xp上,如果重要的话). C:devunicodevsunicodevsDebug>unicodevs.exe Hello World! ┬ú∞ C:devunicodevsunicodevsDebug> 鉴于终端没有用于渲染它们的字体,我认为这是预期的. C:devunicodevsunicodevsDebug>cmd /u /c "unicodevs.exe > output.txt" 生成的文件(即使其UTF-8编码)如下所示: Hello World! ?£ì 源文件本身被定义为unicode(以UTF-8编码,没有BOM). 1>------ Rebuild All started: Project: unicodevs,Configuration: Debug Win32 ------ 1>Deleting intermediate and output files for project 'unicodevs',configuration 'Debug|Win32' 1>Compiling... 1>main.c 1>.main.c(1) : warning C4005: 'UNICODE' : macro redefinition 1> command-line arguments : see previous definition of 'UNICODE' 1>.main.c(2) : warning C4005: '_UNICODE' : macro redefinition 1> command-line arguments : see previous definition of '_UNICODE' 1>Note: including file: C:Program FilesMicrosoft Visual Studio 9.0VCincludewchar.h 1>Note: including file: C:Program FilesMicrosoft Visual Studio 9.0VCincludecrtdefs.h 1>Note: including file: C:Program FilesMicrosoft Visual Studio 9.0VCincludesal.h 1>C:Program FilesMicrosoft Visual Studio 9.0VCincludesal.h(108) : warning C4001: nonstandard extension 'single line comment' was used 1>Note: including file: C:Program FilesMicrosoft Visual Studio 9.0VCincludecrtassem.h 1>Note: including file: C:Program FilesMicrosoft Visual Studio 9.0VCincludevadefs.h 1>Note: including file: C:Program FilesMicrosoft Visual Studio 9.0VCincludeswprintf.inl 1>Note: including file: C:Program FilesMicrosoft Visual Studio 9.0VCincludewtime.inl 1>Linking... 1>Embedding manifest... 1>Creating browse information file... 1>Microsoft Browse Information Maintenance Utility Version 9.00.30729 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>Build log was saved at "file://c:devunicodevsunicodevsunicodevsDebugBuildLog.htm" 1>unicodevs - 0 error(s),3 warning(s) ========== Rebuild All: 1 succeeded,0 failed,0 skipped ========== 关于我做错什么的任何想法? 我也尝试使用code :: blocks / mingw gcc构建它,但得到了相同的结果. 解决方法
这不是写作(wprintf)的问题,而是导致问题的输出的cmd重定向.您可以通过直接写入文件来尝试测试.在这种情况下,如果您只是写了几个单词,那么您可能会遇到记事本(或者更确切地说是Windows API函数)没有正确猜测并将您的文本解释为ASCII错误.在这种情况下,您还需要首先将BOM字符写入文件.
#include <stdio.h> #include <wchar.h> int main() { FILE *out; char bom[] = "xFFxFE"; wchar_t s[] = L"中文!"; size_t c; out = fopen ("out.txt","w"); if(out == NULL) { perror("out.txt"); return 1; } c = fwrite(bom,1,2,out); if(c != 2) { perror ("Fatal write error."); fclose(out); return 2; } c = fwrite(s,sizeof(wchar_t),wcslen(s),out); if(c != wcslen(s)) { perror ("Fatal write error."); fclose(out); return 2; } fclose(out); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Win10 系统直接在目录下打开cmd
- 我的Windows应用程序真正使用了多少内存?
- windows-server-2008 – Windows Server 2008上的uptime.ex
- windows-phone-7 – 如何在主线程中获得异步结果
- 如何检测Windows XP机器上是否播放任何声音
- windows+python3.6下安装fasttext+fasttext在win上的使用+g
- windows – x64调用约定(堆栈)和varargs
- windows-7 – 如何检索Windows 7的安装ID和确认ID?
- RUN command!!!!!
- 如何在Windows Server 2008上升级到PHP 5.5
推荐文章
站长推荐
热点阅读