来自阿拉伯联合酋长国的亲爱的阿拉伯读者,
我正在将我的 Linux 代码移植到纯 Windows 上。除其他外,此代码假装将公历日期(内部为 Unix 日期)转换为回历日期,并使用阿拉伯联合酋长国语言环境显示结果。
我需要您的真正原因是在 Windows 及其 C 运行时正确设置您所在国家/地区的语言环境。到目前为止,我已经测试了许多“Arabic_United Arab Emirates.1256”字符串的组合,微软清楚地记录了这些组合。我所有的尝试都返回 null。我面临的问题似乎非常具体到阿拉伯联合酋长国,因为我可以毫无问题地设置:Arabic_Saudi Arabia.1256 或 Arabic_Egypt.1256。
因此,如果那里的某个开发人员拥有安装在他的 Windows PC 上的 Microsoft Visual Studio 套件,他是否愿意在 CMD 终端下使用以下命令构建和运行以下纯 Windows C 代码?
/*
* File : foo.c
*
* To build :
* C:\path>vcvars64
* C:\path>cl /c /Tp foo.c
* C:\path>link /subsystem:console foo.obj kernel32.lib
*
* Goal:
* find the Windows C locale suited for the United Arab Emirates
*
* OS: Microsoft Windows 7 Entreprise N
*/
#include <windows.h>
#include <stdio.h>
#include <locale.h>
void usage(char *str)
{
printf("Usage: %s <CRT localename>");
exit(EXIT_FAILURE);
}
int main(int argc, char **argv)
{
wchar_t localename[100];
if (argc != 2) usage(argv[0]);
MultiByteToWideChar(CP_UTF8, 0, argv[1], -1, localename, sizeof(localename));
wprintf(L"%s\n",_wsetlocale(LC_TIME,localename));
exit(EXIT_SUCCESS);
}
如果您的区域和语言窗口设置(控制面板)设置为阿拉伯语(阿拉伯联合酋长国),那么您应该使用以下命令运行代码:
C:\path>foo ""
并用您阅读的内容回复此帖子。
在我的 Windows 7 和我的 Windows 区域设置上,上面的代码和今晚提供的 CMD 命令向我显示:“French_France.1252”
我确实害怕把自己的笔记本变成阿拉伯语(阿拉伯联合酋长国)。我是一个纯粹的法国公民,试图通过他的公共网站最大程度地满足全球 IT 社区的需求。我绝对没有被介绍过任何阿拉伯语,甚至是阿拉伯语的地方方言。我真的担心如果我将我的区域设置转换为您的国家/地区设置,我将不得不肯定地与 Windows 说再见。我的 Windows Notebook 已预装 Windows。所以没有CD来重新安装Windows。
对于这篇文章的任何回复,非常感谢您。如果您带来预期的答案,如果可能的话,解决方案会更多。
菲利普·沃特斯