请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,不明白为什么还打印乱码?

https://img1.sycdn.imooc.com//szimg/5fed187309f3ef0411350267.jpg

https://img1.sycdn.imooc.com/szimg/5fed189309aaf3e809480504.jpg

https://img1.sycdn.imooc.com/szimg/5fed18b309c9127f11300577.jpg

我都按老师视频的要求设置了,编译器用的MSVC,还是乱码。

代码:

#include <io_utils.h>
#include <string.h>
#include <stdlib.h>
#include <wchar.h>
#include <wctype.h>
#include <locale.h>

int main() {
  // support for wide string
  {
    PRINT_BOOL(iswalpha(L'A'));
    PRINT_BOOL(iswdigit(L'2'));

    wchar_t *wcs = L"你好 Hello";
    size_t length = wcslen(wcs);
    PRINT_INT(length);

    wchar_t src[] = L"HelloWorld";
    wchar_t *dest = malloc(sizeof(wchar_t) * 11);
    wmemset(dest, 0, 11);
    wmemcpy(dest, src, 11);
    _putws(dest);
    wmemcpy(dest + 3, dest + 1, 4);
    _putws(dest);
    free(dest);
  }

  // conversions
  char *new_locale = setlocale(LC_ALL, "zh_CN.utf8");
  if (new_locale) {
    puts(new_locale);
  }

  {
    char mbs[] = "你好";
    wchar_t wcs[10];
    mbstowcs(wcs, mbs, 10);
    wprintf(L"%s\n", wcs);
  }
  return 0;
}


正在回答 回答被采纳积分+3

3回答

bennyhuo 2021-01-03 07:59:12

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/setlocale-wsetlocale?view=msvc-160#utf-8-support


你看下,这是微软的官方文档,设置 utf-8 可以试试 :`setlocale(LC_ALL, ".utf8")`

可能是 Windows Home 版本是不是没有 locale 命令,我的专业版里面命令行运行时可以找到这些 locale 的:

https://img1.sycdn.imooc.com//szimg/5ff108a809d1c75f07060241.jpg

实际上,Linux 和 Mac 上也有 locale 命令,这个方法查看系统支持的 locale 都有哪些,有的话就可以通过 setlocale 函数去设置了。

0 回复 有任何疑惑可以回复我~
bennyhuo 2020-12-31 09:55:11

是不是没有装中文语言。。。如果设置 locale 成功的话, puts(new_locale) 会有输出,你这个里面没有。

0 回复 有任何疑惑可以回复我~
  • 提问者 相信光变成光 #1
    老师,我百度了,没有找到解决方法。还请老师明示
    回复 有任何疑惑可以回复我~ 2020-12-31 12:08:03
  • bennyhuo 回复 提问者 相信光变成光 #2
    另一个回复里,让你运行命令,贴一下结果我看看
    回复 有任何疑惑可以回复我~ 2020-12-31 13:12:14
bennyhuo 2020-12-31 09:10:54

你的系统没有中文locale? 命令行 locale -a看看输出啥

0 回复 有任何疑惑可以回复我~
  • 提问者 相信光变成光 #1
    在cmd运行的,输出:'locale' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    回复 有任何疑惑可以回复我~ 2021-01-01 18:06:28
  • bennyhuo 回复 提问者 相信光变成光 #2
    就是你的系统语言问题,可能是中午安装的问题,理解原理就行了,不用纠结
    回复 有任何疑惑可以回复我~ 2021-01-01 20:27:39
  • 提问者 相信光变成光 回复 bennyhuo #3
    中午安装?是不是应该是错误安装?
    回复 有任何疑惑可以回复我~ 2021-01-01 20:40:29
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信