Windows 11 PowerShell重定向文本文件的编码问题

目录

问题的由来

编码导致的问题

解决办法

VSCode进行转换

记事本进行转换

直接指定输出的文本编码

总结


问题的由来

在我的嵌入式系统的课程中有一个裸机开发的实验,其中需要把图片等文件转换为C语言数组保存在程序中。课程中,我推荐了CodePlea的hexembed工具来进行转换,它将转换结果输出到标准输出设备,使用重定向可以保存为文件。这个方法用了几年也没啥问题,不过今年由于使用Windows 11的同学增多,一些同学反应生成的文件在我们裸机开发的环境无法编译,会报告错误。今天来分析一下原因,并给出几个解决的办法。

编码导致的问题

我们使用如下的命令进行重定向保存文本。

 .\hexembed.exe .\hexembed.c > hex.h

这个方法在先前的Windows版本中都没有问题。不过在Windows 11中默认使用PowerShell作为终端,而其默认的文本输出编码格式为UTF-16LE。

如果用VS Code或者记事本打开文件,都可以在右下角看到文件的编码格式。

UTF - 16 是一种 Unicode 编码方式,它使用 16 位(2 个字节)或 32 位(4 个字节)来表示一个字符。UTF - 16 LE 是 UTF - 16 的小端字节序(Little - Endian)版本,即低位字节存储在低地址,高位字节存储在高地址。对于英文文本,UTF - 8 每个字符占用 1 个字节,而 UTF - 16 LE 每个字符至少占用 2 个字节,所以 UTF - 8 更节省空间。对于中文等非 ASCII 字符,UTF - 8 通常使用 3 个字节,UTF - 16 LE 使用 2 个字节,在这种情况下 UTF - 16 LE 更节省空间。我们可以用VS Code的Hex插件打开所转换得到的文件,就可以清楚地看到它的编码特点了。

一般的文本编辑器都可以正确处理UTF -16 LE的文本,所以我们感觉不到这种编码差别,但是裸机开发使用的GCC编译器不支持这种格式的文本,就会出现编译错误。

解决办法

下面就介绍几种解决这个问题的方法。

VSCode进行转换

在VS Code中可以点击右下角的UTF-16 LE,然后在弹出的选项中选择“Save with Encoding”,选择Western作为保存的编码格式,然后按CTRL+S保存文件即可。

记事本进行转换

可以使用记事本打开文件,然后在“另存为”的对话框中指定编码方式为ANSI。

直接指定输出的文本编码

也可以在PowerShell进行重定向时指定编码格式,不过此时不能使用“>”符号了,需要改用“|”符号,如:

.\hexembed.exe .\hexembed.c | Out-File hex.h -encoding ASCII

这样生成的文件直接就是ANSI格式的了。 

总结

由于大多数编译器都是基于ANSI的,所以在文件的编码格式对于编程就需要格外小心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL开发的智能助手:通义灵码在IntelliJ IDEA中的应用

SQL 是一种至关重要的数据库操作语言,尽管其语法与通用编程语言有所不同,但因其在众多应用中的广泛使用,大多数程序员都具备一定的 SQL 编写能力。然而,当面对复杂的 SQL 语句或优化需求时,往往需要专业数据库开发工程…

算法——分支限界

学习目标: 掌握算法入门知识 学习内容: 分支限界的定义例题详细步骤讲解(找牛) 1. 分支限界的定义 分支限界法是一种用于求解 组合优化问题 的算法框架,通过 系统性地搜索解空间树,并结合 剪枝策略 来避…

对接日本金融市场数据全指南:K线、实时行情与IPO新股

一、日本金融市场特色与数据价值 日本作为全球第三大经济体,其金融市场具有以下显著特点: 成熟稳定:日经225指数包含日本顶级蓝筹股独特交易时段:上午9:00-11:30,下午12:30-15:00(JST)高流动性…

解决opencv中文路径问题

见cv_imread函数和cv_imwrite函数 import cv2 import os import matplotlib.pyplot as plt from paddleocr import PaddleOCR, draw_ocr import numpy as np import urllib.parse # Add this import statementfrom txt_get import ImageTextExtractor# 初始化OCR,…

Linux中的Vim与Nano编辑器命令详解

📢 友情提示: 本文由银河易创AI(https://ai.eaigx.com)平台gpt-4-turbo模型辅助创作完成,旨在提供灵感参考与技术分享,文中代码与命令建议通过官方渠道验证。 在Linux系统中,文本编辑是最常用的…

宝马集团加速 ERP 转型和上云之旅

宝马集团(BMW Group)作为全球领先的豪华汽车和摩托车制造商,致力于构建更加智能、绿色、人性化的出行体验。为了支持其全球化、数字化业务战略,宝马集团正在进行大规模的 IT 体系升级和 ERP 云转型。该项目以“RISE with SAP S/4H…

大数据学习(105)-Hbase

🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…

【数学建模】

全国大学生数学建模竞赛(CUMCM)历年试题速浏(查看超级方便)_全国大学生数学建模竞赛真题-CSDN博客 高教社杯全国大学生数学建模竞赛历年赛题(含解析、评阅) - 赛氪教育 年份 赛题 真题 问题类型 对应算法及模型 2023年 A题 定日镜场的优化设计 …

【Python语言基础】18、多态

文章目录 1. 多态1.1 什么是多态1.2 多态实现方式1.3 多态的好处1.4 多态的好处1.5 不同层面的理解1.6 多态的优缺点 1. 多态 在 Python 里,多态是一种非常有用的编程特性,它能让你以统一的方式处理不同类型的对象 1.1 什么是多态 多态就好比在生活中…

AI多模态论文解读:OmniCaptioner:多领域视觉描述生成框架(附脑图)

AIGCmagic社区知识星球是国内首个以AIGC全栈技术与商业变现为主线的学习交流平台,涉及AI绘画、AI视频、大模型、AI多模态、数字人以及全行业AIGC赋能等100应用方向。星球内部包含海量学习资源、专业问答、前沿资讯、内推招聘、AI课程、AIGC模型、AIGC数据集和源码等…

Spring IoC深度解析:掌控Bean存储艺术与分层架构的智慧​​

一、IoC的本质:从"造物主"到"使用者"的思维跃迁 在传统编程中,开发者像"造物主"一样亲手创建每个对象(new UserController()),并管理它们的依赖关系。这种方式导致代码高度耦合&#xf…

ubuntu22.04下安装mysql以及mysql-workbench

一、mysql安装以及配置 安装之前先查看是否已将安装mysql: rpm -qa | grep mysql (一)、在线安装 保证网络正常的情况下: 1、更新软件包: sudo apt update 2、安装mysql安装包 查看可以安装的安装包: sudo apt search mysql-server 安装指定安装包: sudo apt i…

第二届数字图像处理与计算机应用国际学术会议(DIPCA 2025)

重要信息 时间:2025年4月25-27日 地点:中国-西安 官网:www.icipca.net(了解详情) 部分展示 征稿主题 包括但不限于: 图像处理:模式识别、计算机视觉、低级视觉和图像处理、光学技术在图像中的…

【后端开发】Spring MVC阶段总结

文章目录 快捷引入依赖lombok的使用Lombok依赖Lombok使用Lombok注解 三层架构分层的目的MVC与分层的区别三层架构分层的好处 企业命名规范常见命名命名风格介绍大驼峰风格小驼峰风格包名 常见注解Cookie与Session 快捷引入依赖 这个方法可以快捷引入依赖,但是引入依…

FastAPI依赖注入系统及调试技巧

title: FastAPI依赖注入系统及调试技巧 date: 2025/04/11 15:00:50 updated: 2025/04/11 15:00:50 author: cmdragon excerpt: FastAPI的依赖注入系统采用树状结构管理依赖关系,自动解析并执行依赖项。复杂依赖关系可能导致循环依赖、性能问题、逻辑错误和调试困难。使用Fa…

DeepSeek赋能!企业私有化知识库3大搭建方案拆解

最近公司要搭建一个私有化的知识库,通过对比分析,发现企业级私有化知识库搭建有多种方案选型,今天就分享下这几种企业私有化知识库搭建方案。 一、为何选择本地部署? 这个分个人还是企业,如果个人用,其实各…

对称加密与非对称加密与消息摘要算法保证https的数据交互的完整性和保密性

一、对称加密与非对称加密的作用 1. 对称加密 作用: 保密性:对称加密使用相同的密钥对数据进行加密和解密,确保数据在传输过程中不被窃听。效率:对称加密算法(如AES)计算速度快,适合加密大量数…

程序化广告行业(76/89):行业融资全景剖析与代码应用拓展

程序化广告行业(76/89):行业融资全景剖析与代码应用拓展 大家好!在之前的文章里,咱们一起了解了程序化广告行业的发展趋势以及PC端和移动端投放的差异。今天,咱们接着深入学习,这次聚焦在程序化…

两个树莓派如何通过wifi direct传输视频并显示

这里写自定义目录标题 在两台设备上安装必要软件Wi-Fi Direct接收端IP(自动发现或静态设置)设置摄像头参数显示初始化网络设置 系统架构概述 发送端树莓派:捕获视频(摄像头或视频文件)→ 编码 → 通过Wi-Fi Direct传输…

ubuntu22.04安装ROS2 humble

参考: https://zhuanlan.zhihu.com/p/702727186 前言: 笔记本安装了ubuntu20.04安装ros一直失败,于是将系统升级为ununut22.04,然后安装ros,根据上面的教程,目前看来是有可能成功的。 系统升级为ununut…