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.pswp.cn/diannao/77567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77567.shtml
英文地址,請注明出處:http://en.pswp.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…