首页 > 其他分享 >打印特殊字符出现问号的问题

打印特殊字符出现问号的问题

时间:2024-06-04 18:24:28浏览次数:17  
标签:字符 方式 windows 打印 result wchar 特殊字符 问号

在使用fwprintf向控制台打印诸如版权符©,或者注册商标符®时,发现输出的是问号(?),这无疑是一个字符集的问题。接收的数据是wchar_t,这个没办法变了。wchar_t为宽字符类型或双字符类型在,windows下采用的是unicode16,推测还是解析字符时使用的编码方式不正确。
尝试使用chcp,更改命令行调用的codepage,使用了gbk(936)和utf8(65001)不起作用,但更改uft16(1200),提示无效,所以没成功。
程序里调试发现,对应的字符指针的值是正确的,也就是打印调用出现的问题。经过同事帮助,更改了打印的方式。

wchar_t* result;

//方式1
#include <fcntl.h>
#include <corecrt_io.h>
_setmode(_fileno(stdout), _O_U16TEXT);
fwprintf(stdout, L"%s", result);

//方式2
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
WriteConsoleW(console, result, wcslen(result), NULL, NULL);

经过测试,这两种方式都可以解决问题。但方式1会影响程序全局,方式2只适用于windows平台。
由于我程序在windows下运行,所以选择了方式2。

标签:字符,方式,windows,打印,result,wchar,特殊字符,问号
From: https://www.cnblogs.com/GISyunqi/p/18231450

相关文章

  • MyBatis-Plus如何关闭SQL日志打印详解
    前言MyBatis-Plus配置关闭打印SQL日记失效追本溯源,关闭打印日记是真的失效吗?找到问题与解决问题 总结 前言前段时间公司的同事都过来问我,hua哥公司的项目出问题了,关闭不了打印sql日记,项目用宝塔自己部署的,磁盘满了才发现大量的打印sql日记,他们百度过都按照网上的配置......
  • 打印完整的接口请求信息
    遇到的问题:  1、做接口测试时遇到问题,经常碰到开发要求发出完整的请求入参,脚本写的都是拼接前的数据  2、实际调用接口的数据都是加密后的数据,可能是因为加密出现的问题,需要具体的入参来排查"""打印完整的请求信息"""importrequestsdeftest_r(mothod,url,params......
  • 联想打印机更换硒鼓后仍旧报错,如何做硒鼓计数器清零?
        在联想打印机的使用过程中,硒鼓是一个重要的耗材,它直接影响到打印质量和打印机的运行。通常,当打印机显示硒鼓错误或者打印质量下降时,更换新的硒鼓是一个常见的解决方案。然而,有时候即使更换了新的硒鼓,打印机仍然会报错,这可能是由于硒鼓计数器没有清零导致的。  ......
  • 编写程序,创建一个集合Set,其中含有100个元素,每个元素是0~1000之间的一个随机数。打印
    实验代码: importrandomasrSet=set()foriinrange(100):num=r.randint(0,1000)Set.add(num)#使用列表推导式和join方法来输出结果print('{'+','.join(str(i)foriinSet)+'}')iflen(Set)==100:print("随机数没有出现重复!")......
  • 转 Win10 共享文件夹、打印机。 使用微软账户登录共享文件夹,如何确认账号密码。
    目的是通过该方法实现了局域网内 共享目录给电视盒子,放在电视盒子使用。感谢不爱吃山楂大佬https://zhuanlan.zhihu.com/p/446872571   Win10共享文件夹、打印机。使用微软账户登录共享文件夹,如何确认账号密码。......
  • java期末练习题,设计一个学生类,包括公开的学号、私有的成绩及其题目所要求的条件进行打
    (1)Student类中包含公开的学号、私有的成绩两个属性;(2)分别给这两个属性分别定义设置值与获取值的方法;1)在学号设置方法中,如果学号长度大于12位,提示用户并截取前12位。2)在分数设置方法中,如果分数不在0-100范围内,提示用户并默认60分。(3)Student类中定义一个无参的......
  • MyBatis实战:如何将拼接的SQL打印到日志
    哈喽,大家好,我是木头左!一、前言在日常开发中,经常会遇到拼接SQL的情况,这时候,如何将拼接的SQL打印到日志,以便追踪和调试呢?本文将详细介绍MyBatis如何实现这一功能。二、MyBatis简介MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有......
  • 【科普向】【文末附gpt升级秘笈】《庆余年》凤冠之工艺探究——Blender建模与3D打印之
    《庆余年》凤冠之工艺探究——Blender建模与3D打印之奥秘一、引言昔者,《庆余年》之热播,引发天下观众之热议。今者,其续作《庆余年2》之中,一场盛大的婚礼更是瞩目。而此婚礼之上,唯一之凤冠,竟出自一款名为Blender之软件之手,辅以3D打印之技术,成就其非凡之美。夫此软件,诞生于三十......
  • 快团团供货大团长如何打印电子面单?
    一、功能说明 快团团打单平台是目前唯一一个服务于快团团团长的打单发货工具,免费提供给团长使用。可帮助团长快速打印面单、分拣包裹、完成发货。目前快团团打单平台已支持大批量打印快递单、自定义快递面单、自动发货、绑定拼多多电子面单账号等功能,由拼多多官方提供技术......
  • C++实现删除打印机副本功能
     我们要实现此功能,首先需要获取到打印机的名称,其次是将获取到的打印机名称依次删除。一、获取打印机副本名称1.我们获取打印机副本名称,可以使用windowsAPI中的EnumPrinters函数,该函数可以枚举出我们电脑中的打印机设备信息,该函数使用方法如下:DWORDFlags=PRINTER_ENU......