问题标签 [wchar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4447 浏览

c++ - Linux 和 Windows 的 wchar_t 的区别和转换

我从这个这个线程中了解到,在 Windows 中,wchar_t 是 16 位的,而对于 Linux,wchar_t 是 32 位的。

我有一个客户端-服务器架构(仅使用管道而不是套接字)——我的服务器是基于 Windows 的,客户端是 Linux。

服务器有一个 API 可以从客户端检索主机名。当客户端基于 Windows 时,它可以只执行 GetComputerNameW 并返回 Wide-String。但是,当客户端基于 Linux 时,事情就会变得一团糟。

作为第一种天真的方法,我使用 mbstowcs() 希望将 wchar_t* 返回到 Windows 服务器端。但是,这个 LPWSTR(我的 linux 客户端有 typedef wchar_t* LPWSTR)在 Windows 上是无法识别的,因为它期望它的 wchar_t 是 16 位的。

那么,将 linux 上 gethostname() 的输出转换为 char* 为 unsigned short(16 位)是我唯一的选择吗?

提前致谢!

0 投票
2 回答
946 浏览

c++ - 从 UTF-8 到 ANSI wcstombs 的转换在一个特殊字符处失败

我想更改 wchar_t*,就像它显示为 char* 一样。不应进行像 WideCharToMultibyte 中的转换。

我找到了 wcstombs 函数,它看起来工作正常,但是有一个字符没有得到正确更改。

它是“-”,它的 ANSI 编号是 156,但在 UTF-8 中是数字 339。当然 ASCII 没有那么多数字,但为什么会弄错呢?

这是我的源代码的一部分,我添加了一个循环和一个 if 以便它工作:

此代码有效,但说真的,这是解决该问题的最佳方法吗?

提前谢谢了!

0 投票
0 回答
524 浏览

wchar - Wsutil.exe(本机 Web 服务编译器):用于 xsd:string 类型的 WCHAR* 与 LPCWSTR

本机 Web 服务编译器是否有充分的理由为WCHAR *vs xsd:stringa const wchar_t*(或简称为 LPCWSTR)生成 a?

我提出这个问题的原因是我们的应用程序是一个本地 c++ 应用程序,它std::wstring在需要传递到 WCF 服务的代码中浮动。为了使用本地 Web 服务编译器生成的 C 函数,它迫使我做一些事情,例如

从上面可以看出,我被迫取消conston 指针,我在这里关注的一点是,明确地有一个WCHAR*类型是指针数据预计会被 webservices.lib 本身操纵吗?

或者,我最终可以将字符串的内容复制到 aWCHAR*但是因为我们的 c++ 应用程序作为服务运行,并且我们对频繁的分配/取消分配存在堆碎片问题。

谢谢,拉古

0 投票
2 回答
165 浏览

c++ - 宽字符输出结果

为什么我在使用 wchar_t 时会得到数字作为输出结果?

0 投票
0 回答
165 浏览

wchar - 如何让我的代码也处理 wchar_t

我真的很想在这方面得到一些帮助。我对 C++ 编程比较陌生。我需要我的代码能够处理 ASCII 和 Unicode。以下是输入 szTestString1,在输入中找到“Ni”并将其替换为“NI”。szTestString1 是 ASCII 所以我的代码工作正常。如何使代码也能够处理 szTestString2?我用 wstring 替换了字符串,用 L"Ni" 替换了 "Ni"。此外,我使用 wcout 而不是 cout,但输出没有多大意义。而我现在迷路了。任何提示将不胜感激。

0 投票
2 回答
506 浏览

c++ - wchar_t 到字符串的转换

我想将strFileNotifyInfo[1].FileName (Wchar_t) 转换为字符串,以便我可以看到文件路径。但我不能让它工作。

这是我的代码:

0 投票
2 回答
3700 浏览

c++ - 使用 -fshort-wchar 的含义

在 Mac OS X 系统上浏览文件 wchar.h 时,我发现当未定义 __cplusplust 并且 wchar_t 的最大大小为 2 字节时(通过使用编译器选项 -fshort -wchar)。

似乎对于 C 程序,如果定义了 -fshort-wchar,则不允许使用此类函数。我想知道使用 -fshort-wchar 时使用 wchar_t 函数的含义是什么?

您可能想知道为什么我需要使用 -fshort-wchar。因为,我正在移植一个最初为 Windows 编写的应用程序,其中 wchar_t 的大小为两个字节。保存在 wchar_t 字符串中的数据被写入文件,并且还在两个应用程序之间交换。

什么是处理不同平台上 wchar_t 可变性的好方法?Windows 上的假设是 wchar_t 为 16 位。

0 投票
1 回答
1345 浏览

c++ - 将字符转换为宽字符

我正在尝试使用该mbstowcs_s函数将多字节字符序列转换为相应的宽字符序列。但我一直有以下堆损坏问题。谁能告诉我如何解决这个问题?

在此处输入图像描述

这是一个示例代码。调试时,始终是delete wc_name导致问题的线路。我知道不应该这样。

0 投票
1 回答
6046 浏览

c - 比较WCHAR字符串和C中的Const Char?

我用 C 编写了一个代码,它将使用 Process32First() API 来获取有关该进程的信息。所有信息都存储在此处定义的 PROCESSENTRY32 结构中:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms684839%28v=vs.85%29.aspx

pe32 是 PROCESSENTRY32 结构的名称。进程名称将是:pe32.szExeFile

我可以这样打印:

现在,我想将进程名称与 explorer.exe 等特定进程进行比较

这就是我正在做的事情:

这没用。

在 MS Visual Studio 2008 中,PROCESSENTRY32 结构的 szExeFile 成员的数据类型为:WCHAR tagPROCESSENTRY32::szExeFile[260]

所以,我认为它是一个宽字符串?

explorer.exe 是一个普通的字符串(const char *),指向一个字符数组的指针。

如何将 szExeFile 与普通字符串进行比较?

我发现这些数据类型很混乱,我希望通过这个例子更好地理解它们。

谢谢。

0 投票
1 回答
489 浏览

c - 为什么 wprintf 将 Unicode 连字分成两个不同的字素?

代码:

输出:

ae & ASCII 文本 ae

虽然 printf 产生正确的 UTF-8 输出:

æ & ASCII 文本 ae

你可以在这里测试一下。