PowerShell Core编码问题解决方案:从乱码到跨平台文本处理
1. 从一次“乱码”事故说起为什么PowerShell Core的编码这么重要如果你在Windows上用过PowerShell然后满怀期待地切换到跨平台的PowerShell Core现在叫PowerShell 7准备大展拳脚结果很可能在第一次处理文本文件时就栽了跟头。我印象最深的一次是在一个自动化脚本里需要读取一个由Windows记事本保存的、包含中文的配置文件。在Windows PowerShell 5.1里一切正常脚本跑得飞起。但当我用PowerShell 7在同一个系统上执行时配置文件里的中文全变成了“锟斤拷”之类的乱码脚本直接报错流程中断。那一刻我才意识到编码Encoding这个看似底层的细节在PowerShell Core这个“现代化”的Shell里已经成了一个必须优先处理的“基础设施”问题。它不像语法错误那样明显却能在你最不经意的时候让整个自动化流程崩溃。更麻烦的是这个问题具有隐蔽性可能在你本地开发时一切正常因为文件是你用PowerShell 7新建的但一旦去读取一个历史遗留文件或者接收来自其他系统、其他工具生成的文件时乱码就突然出现了。所以今天我们不谈高深的Cmdlet就聚焦一个非常具体、又极其影响日常体验的问题如何修改PowerShell Core的默认编码方式让它更符合你的工作环境避免无处不在的编码陷阱。这不仅仅是改个设置更是理解PowerShell Core跨平台设计哲学与本地化实践之间如何协调的关键一步。无论你是运维工程师、开发者还是数据分析师只要你需要在Windows、Linux、macOS之间用PowerShell处理文本这篇文章就是为你准备的避坑指南。2. 核心矛盾PowerShell Core的“无默认编码”与现实的“编码依赖”要解决问题首先得理解问题是怎么来的。很多人以为PowerShell Core会像Windows PowerShell一样有一个明确的、全局的默认编码比如ANSI。但实际上PowerShell Core在设计上刻意“取消”了一个统一的默认编码。这是一个非常重要的理念转变。2.1 为什么PowerShell Core没有“默认编码”这得从它的跨平台使命说起。Windows PowerShell 5.1是深深植根于Windows生态的它默认使用Windows系统的活动代码页Active Code Page在中文系统下通常是GBK代码页936。而Linux和macOS的世界标准是UTF-8。如果PowerShell Core强行指定一个默认编码无论是UTF-8还是GBK都会在另一个平台上造成混乱。因此PowerShell Core团队采取了一个更“灵活”也更具挑战的策略让许多Cmdlet的-Encoding参数默认值为UTF8NoBOM但对于文件读取等操作则依赖于.NET Core运行时对文件编码的自动检测机制。这个策略的初衷是好的——追求跨平台的一致性UTF-8和智能性自动检测。但理想很丰满现实却很骨感。2.2 自动检测的“失灵”与乱码的根源.NET Core的编码检测并非万能。它主要尝试通过检查文件开头的字节顺序标记BOM来判断。如果文件有BOM比如UTF-8 BOM, UTF-16 LE BOM那么检测很准确。但现实世界中大量文件是没有BOM的尤其是Windows记事本保存的“ANSI”文件在中文Windows下这其实就是GBK编码没有BOM。许多Linux工具生成的UTF-8文件默认不带BOM。一些老旧系统或特定软件生成的文件可能是各种奇怪的编码。当没有BOM时.NET Core会回退到系统的默认编码。在Linux/macOS上这通常是UTF-8在Windows上这可能是Windows-1252或类似编码但绝对不是GBK。这就是为什么在Windows上PowerShell 7读取一个GBK编码的记事本文件时.NET检测不到BOM回退到系统默认编码非GBK最终导致中文乱码。简单来说问题的核心矛盾在于PowerShell Core为了跨平台放弃了Windows PowerShell那种与Windows本地编码如GBK的强绑定转而依赖UTF-8和智能检测。但在Windows环境下大量遗留文件是GBK编码且无BOM的智能检测在这里失效了造成了“水土不服”。3. 全局修改一劳永逸设置PowerShell Core的默认编码理解了问题的根源解决方案就清晰了。我们的目标不是让PowerShell Core变回Windows PowerShell而是让它在我们特定的工作环境中有一个稳定、可预测的编码行为。最彻底的方法就是修改它的“默认”行为。PowerShell Core没有像$PSDefaultParameterValues那样直接针对-Encoding参数的全局默认值设置但我们可以通过修改它的配置文件Profile来模拟实现。3.1 定位与创建PowerShell Core配置文件首先你需要找到或创建PowerShell Core的配置文件。它的路径和Windows PowerShell的不同。打开PowerShell 7运行以下命令查看当前所有可能Profile的路径$PROFILE | Get-Member -MemberType NoteProperty你会看到类似这样的输出TypeName: System.String Name MemberType Definition ---- ---------- ---------- AllUsersAllHosts NoteProperty string AllUsersAllHostsC:\Program Files\PowerShell\7\profile.ps1 AllUsersCurrentHost NoteProperty string AllUsersCurrentHostC:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1 CurrentUserAllHosts NoteProperty string CurrentUserAllHostsC:\Users\YourName\Documents\PowerShell\profile.ps1 CurrentUserCurrentHost NoteProperty string CurrentUserCurrentHostC:\Users\YourName\Documents\PowerShell\Microsoft.PowerShell_profile.ps1对于个人用途修改CurrentUserCurrentHost这个路径对应的文件是最常见的。如果这个文件不存在你需要创建它。# 如果配置文件不存在则创建 if (!(Test-Path $PROFILE.CurrentUserCurrentHost)) { New-Item -ItemType File -Path $PROFILE.CurrentUserCurrentHost -Force } # 用记事本打开配置文件 notepad $PROFILE.CurrentUserCurrentHost3.2 在配置文件中重写关键Cmdlet的默认行为接下来我们在配置文件中编写代码。我们的思路是创建我们自己的函数来“包装”那些常用的文件操作Cmdlet如Get-Content,Set-Content,Out-File等并在其中指定我们想要的默认编码。假设我们的工作环境主要在中文Windows需要频繁处理GBK编码的历史文件同时希望新文件默认用UTF-8无BOM为了跨平台兼容。我们可以这样设置# 在 $PROFILE.CurrentUserCurrentHost 文件中添加以下内容 # 1. 为 Get-Content 设置默认编码为 GBK用于读取旧文件 $PSDefaultParameterValues[Get-Content:Encoding] gbk # 2. 为 Set-Content 和 Out-File 设置默认编码为 UTF8无BOM用于创建新文件 $PSDefaultParameterValues[Set-Content:Encoding] utf8 $PSDefaultParameterValues[Out-File:Encoding] utf8 # 但是$PSDefaultParameterValues 对 Add-Content 等可能不总是有效且无法覆盖所有场景。 # 更稳健的方法是创建包装函数。 function Read-File { [CmdletBinding()] param( [Parameter(Mandatory$true, ValueFromPipeline$true)] [string[]]$Path, [string]$Encoding gbk # 默认GBK读取 ) process { Get-Content -Path $Path -Encoding $Encoding } } function Write-File { [CmdletBinding()] param( [Parameter(Mandatory$true)] [string]$Path, [Parameter(Mandatory$true, ValueFromPipeline$true)] [object]$InputObject, [string]$Encoding utf8 # 默认UTF8写入 ) process { $InputObject | Set-Content -Path $Path -Encoding $Encoding } } # 可选为常用文本处理Cmdlet创建别名方便使用 Set-Alias -Name rcat -Value Read-File -Scope Global Set-Alias -Name wcat -Value Write-File -Scope Global Write-Host PowerShell Core 默认编码配置已加载读取-GBK 写入-UTF8 -ForegroundColor Green这段配置的逻辑是读取旧文件我们通过$PSDefaultParameterValues和自定义的Read-File函数将Get-Content的默认编码设为gbk。这样读取那些无BOM的GBK文件时就不再需要手动指定-Encoding gbk了。写入新文件我们将Set-Content和Out-File的默认编码设为utf8即UTF-8无BOM。这是为了向前看创建的新文件都使用跨平台兼容性最好的UTF-8编码。提供替代方案由于$PSDefaultParameterValues可能在某些模块或复杂管道中不生效我们创建了Read-File和Write-File这两个包装函数并设置了简短的别名rcat,wcat作为更可靠的备用方案。保存配置文件并重启PowerShell 7这些设置就会生效。现在当你用Get-Content读取一个GBK文件时就不会再乱码了。注意$PSDefaultParameterValues是一个强大的偏好变量但它只影响在你设置它之后运行的命令。如果某个脚本或模块在内部显式指定了编码这个默认值会被覆盖。4. 场景化解决方案不同需求下的编码处理策略全局修改适合个人工作环境定型的情况。但很多时候我们需要更灵活的、按需处理的策略。下面针对几种常见场景给出具体的解决方案。4.1 场景一批量转换历史遗留文件的编码你有一个目录里面全是GBK编码的脚本、日志或配置文件现在想统一转换成UTF-8无BOM编码以便在Linux服务器或现代编辑器中正常使用。# 假设目标目录是 D:\LegacyFiles $sourceDir D:\LegacyFiles $destDir D:\LegacyFiles_UTF8 # 如果目标目录不存在则创建 if (!(Test-Path $destDir)) { New-Item -ItemType Directory -Path $destDir -Force } # 获取所有 .txt, .log, .ps1, .csv 文件按需扩展 Get-ChildItem -Path $sourceDir -Include *.txt, *.log, *.ps1, *.csv -Recurse | ForEach-Object { $destPath $_.FullName.Replace($sourceDir, $destDir) # 确保目标子目录存在 $destParent Split-Path $destPath -Parent if (!(Test-Path $destParent)) { New-Item -ItemType Directory -Path $destParent -Force } # 核心步骤用GBK读取用UTF8写入 $content Get-Content -Path $_.FullName -Encoding gbk -Raw $content | Set-Content -Path $destPath -Encoding utf8 -NoNewline Write-Host 已转换: $($_.Name) -ForegroundColor Yellow } Write-Host 批量转换完成 -ForegroundColor Green关键点解析-Encoding gbk确保正确读取源文件。-Raw将整个文件内容作为一个字符串读入保留所有换行符格式避免逐行处理可能引入的问题。-Encoding utf8以UTF-8无BOM格式写入新文件。-NoNewline配合-Raw使用防止Set-Content在末尾添加额外的换行符。4.2 场景二在脚本中动态判断并处理编码你写的脚本需要同时处理来自不同来源的文件有些是UTF-8带BOM有些是UTF-8无BOM有些是GBK。你希望脚本能智能一点。一个简单但实用的方法是尝试用UTF-8读取如果失败比如出现乱码或异常再尝试用GBK读取。这里我们可以利用.NET的[System.IO.File]类进行更底层的操作。function Get-ContentSmart { [CmdletBinding()] param( [Parameter(Mandatory$true)] [string]$Path ) $byteArray [System.IO.File]::ReadAllBytes($Path) # 尝试检测BOM if ($byteArray[0] -eq 0xEF -and $byteArray[1] -eq 0xBB -and $byteArray[2] -eq 0xBF) { Write-Verbose 检测到UTF-8 BOM $encoding [System.Text.Encoding]::UTF8 # 跳过BOM3字节 $content $encoding.GetString($byteArray, 3, $byteArray.Length - 3) } elseif ($byteArray[0] -eq 0xFF -and $byteArray[1] -eq 0xFE) { Write-Verbose 检测到UTF-16 LE BOM $encoding [System.Text.Encoding]::Unicode $content $encoding.GetString($byteArray, 2, $byteArray.Length - 2) } else { # 无BOM尝试用UTF-8解码如果失败再用GBK Write-Verbose 未检测到BOM尝试UTF-8解码... $utf8 [System.Text.Encoding]::UTF8 $gbk [System.Text.Encoding]::GetEncoding(GBK) try { # 尝试用UTF-8解码整个字节数组 $content $utf8.GetString($byteArray) # 一个粗略的检查如果解码后的字符串包含大量替换字符可能解码失败 if ($content.Contains([char]0xFFFD)) { throw UTF-8解码可能包含无效字符 } Write-Verbose 使用UTF-8编码 } catch { Write-Verbose UTF-8解码失败或结果不佳尝试GBK编码 $content $gbk.GetString($byteArray) } } return $content } # 使用示例 $fileContent Get-ContentSmart -Path C:\somefile.txt -Verbose $fileContent这个函数比简单的Get-Content更健壮它先检查BOM然后尝试UTF-8最后回退到GBK。对于混合编码的环境非常有用。4.3 场景三与其他工具交互时的编码对齐你的PowerShell脚本需要调用一个外部命令行工具该工具输出GBK编码的文本你需要捕获并正确处理这些输出。# 假设有一个古老的命令行工具 oldtool.exe它总是输出GBK编码的文本 $processInfo New-Object System.Diagnostics.ProcessStartInfo $processInfo.FileName oldtool.exe $processInfo.Arguments --generate-report $processInfo.RedirectStandardOutput $true $processInfo.RedirectStandardError $true $processInfo.UseShellExecute $false $processInfo.CreateNoWindow $true # **关键指定进程的标准输出编码为GBK** $processInfo.StandardOutputEncoding [System.Text.Encoding]::GetEncoding(GBK) $processInfo.StandardErrorEncoding [System.Text.Encoding]::GetEncoding(GBK) $process New-Object System.Diagnostics.Process $process.StartInfo $processInfo $process.Start() | Out-Null $stdout $process.StandardOutput.ReadToEnd() $stderr $process.StandardError.ReadToEnd() $process.WaitForExit() # 现在 $stdout 和 $stderr 中的中文字符已经是正确解码的字符串了 Write-Host 工具输出$stdout # 如果你需要将输出保存为UTF-8文件 $stdout | Set-Content -Path report_utf8.txt -Encoding utf8核心技巧通过ProcessStartInfo的StandardOutputEncoding和StandardErrorEncoding属性明确告诉PowerShell外部进程使用的编码。这是解决跨工具编码混乱最有效的方法之一。5. 深入原理理解PowerShell中的编码参数与.NET编码对象当你使用-Encoding参数时你传递的字符串如utf8,gbk,ascii最终会被PowerShell转换为.NET框架中的System.Text.Encoding对象。理解这两者的映射关系以及Encoding对象的特性能让你更从容地应对复杂情况。5.1 常用编码参数与.NET编码名称对照在PowerShell中-Encoding参数接受一些友好的别名它们对应着特定的.NET编码。下表列出了最常见的几种PowerShell-Encoding参数值对应的 .NET 编码对象 (示例)说明典型场景ascii[System.Text.Encoding]::ASCII7位ASCII编码仅支持英文字符。处理纯英文协议、老旧系统日志。bigendianunicode[System.Text.Encoding]::BigEndianUnicodeUTF-16 Big Endian带BOM。某些网络协议或跨平台文件交换。default[System.Text.Encoding]::Default系统当前的ANSI代码页。在中文Windows上是GBK。慎用跨平台行为不一致。读取Windows系统本地生成的无BOM文本。oem[System.Text.Encoding]::GetEncoding([System.Globalization.CultureInfo]::CurrentCulture.TextInfo.OEMCodePage)控制台OEM代码页如中文Windows是代码页936GBK。处理命令行工具输出的文本。unicode[System.Text.Encoding]::UnicodeUTF-16 Little Endian带BOM。Windows内部字符串表示某些Windows API。utf7[System.Text.Encoding]::UTF7已过时的UTF-7编码不安全。应避免使用。utf8[System.Text.Encoding]::UTF8UTF-8 无BOM。这是PowerShell Core许多Cmdlet的默认值。现代跨平台文本文件的标准推荐用于新文件。utf8BOM[System.Text.Encoding]::UTF8(但写入时会添加BOM)UTF-8 带BOM。需要明确标识UTF-8编码的场合但某些工具如Linux shell不推荐BOM。utf8NoBOM自定义实现无BOM的UTF-8UTF-8 无BOM。PowerShell Core的核心默认倾向。同utf8更明确的表述。gbk[System.Text.Encoding]::GetEncoding(GBK)中文简体编码代码页936。处理中文Windows历史遗留文件的关键。数字代码页 (如936)[System.Text.Encoding]::GetEncoding(936)通过数字代码页指定编码。处理特定区域设置的旧文件。重要提示utf8和utf8NoBOM在PowerShell Core的上下文中通常指向同一种行为——生成无BOM的UTF-8文件。但utf8BOM会明确添加BOM。5.2 直接使用.NET编码对象获取最大灵活性有时内置的别名不够用或者你需要更精确的控制。这时可以直接使用.NET的System.Text.Encoding类。# 1. 获取特定名称的编码 $gbkEncoding [System.Text.Encoding]::GetEncoding(GBK) $gb18030Encoding [System.Text.Encoding]::GetEncoding(GB18030) # GBK的超集 $shiftJisEncoding [System.Text.Encoding]::GetEncoding(shift_jis) # 日文 # 2. 通过代码页获取编码 $codePage936 [System.Text.Encoding]::GetEncoding(936) # GBK $codePage65001 [System.Text.Encoding]::GetEncoding(65001) # UTF-8 # 3. 在Cmdlet中使用这些编码对象 $content Get-Content -Path file.txt -Encoding $gb18030Encoding # 4. 转换字节数组与字符串 $bytes [System.Text.Encoding]::UTF8.GetBytes(你好世界) $text [System.Text.Encoding]::GBK.GetString($someByteArray) # 5. 探测文件编码更健壮的方法 function Get-FileEncoding { param([string]$Path) $bytes [System.IO.File]::ReadAllBytes($Path) # 这里可以引入更复杂的探测库如 Ude, chardet 等 # 以下是一个简单的BOM探测 if ($bytes[0] -eq 0xEF -and $bytes[1] -eq 0xBB -and $bytes[2] -eq 0xBF) { return UTF-8 BOM } if ($bytes[0] -eq 0xFF -and $bytes[1] -eq 0xFE) { return UTF-16 LE } if ($bytes[0] -eq 0xFE -and $bytes[1] -eq 0xFF) { return UTF-16 BE } # 无BOM可尝试用多种编码解码看哪个结果“最像”有效文本此处简化 try { [System.Text.Encoding]::UTF8.GetString($bytes) | Out-Null return UTF-8 (无BOM推测) } catch { } # ... 尝试其他编码 return Unknown (可能为ANSI/GBK等) }直接操作.NET编码对象给了你处理任何编码问题的终极武器尤其是在面对非标准或区域性编码时。6. 避坑指南与最佳实践总结折腾了这么久编码问题我也踩过不少坑。下面这些经验希望能帮你少走弯路。6.1 常见陷阱与解决方案陷阱一$PSDefaultParameterValues对管道输入无效不完全对。$PSDefaultParameterValues设置的是参数的默认值。对于Get-Content | Set-Content这样的管道Get-Content读取文件时使用的是你设置的默认编码如gbk但Set-Content写入时使用的是它自己的默认编码我们之前设置为utf8。这是符合预期的。问题在于如果你直接用字符串管道给Set-Content这个字符串在PowerShell中已经是Unicode对象了编码问题发生在更早的阶段。陷阱二从网页复制命令到PowerShell执行后文件编码不对。这是因为你从浏览器通常是UTF-8环境复制的内容粘贴到PowerShell控制台其编码由控制台窗口属性决定可能是GBK时可能已经发生了转码错误。最佳实践永远将命令写在脚本文件.ps1中并用合适的编码如UTF-8 with BOM保存。然后执行脚本文件。陷阱三在Azure Pipelines、Jenkins等CI/CD环境中运行PowerShell Core任务输出日志乱码。这些环境通常运行在Linux容器内默认语言环境是C.UTF-8或en_US.UTF-8。如果你的脚本输出中文需要确保脚本文件本身是UTF-8无BOM编码。在脚本开头显式设置输出编码[Console]::OutputEncoding [System.Text.Encoding]::UTF8。调用外部工具时像场景三那样正确设置StandardOutputEncoding。陷阱四Out-File -Append与混合编码。Out-File -Append默认使用UnicodeUTF-16LE编码。如果你试图用它向一个UTF-8文件追加内容会导致文件损坏。解决方案使用Set-Content -Append并明确指定-Encoding参数或者直接使用.NET方法[System.IO.File]::AppendAllText($path, $content, $encoding)。6.2 个人推荐的工作流经过多次教训我形成了以下习惯基本能规避90%的编码问题统一源头所有我自己创建的PowerShell脚本文件.ps1、配置文件.json, .yaml, .xml一律使用UTF-8 with BOM编码保存。BOM虽然在某些Linux工具里不受欢迎但它能100%确保PowerShell、VS Code、Windows记事本等工具在任何系统上打开时都能正确识别编码。对于纯数据文件可以考虑UTF-8无BOM。环境配置在我的PowerShell Core Profile ($PROFILE)中设置以下默认值$PSDefaultParameterValues[*:Encoding] utf8 # 谨慎使用可能太激进 # 我更倾向于针对性设置 $PSDefaultParameterValues[Get-Content:Encoding] utf8 # 我主要处理新文件 $PSDefaultParameterValues[Set-Content:Encoding] utf8 $PSDefaultParameterValues[Out-File:Encoding] utf8 # 并准备好处理GBK的函数 function Get-ContentGBK { param($Path) Get-Content -Path $Path -Encoding gbk }处理旧文件遇到疑似GBK编码的旧文件第一反应不是直接用Get-Content而是用Get-Content -Encoding gbk或者我自定义的Get-ContentGBK函数。如果批量处理优先进行编码转换如场景一将其“净化”为UTF-8。交互式检查不确定文件编码时用一个十六进制查看器如VS Code的Hex Editor扩展看文件头几个字节或者用前面写的Get-FileEncoding简单函数判断一下这比盲目试错快得多。跨平台传输在Windows和Linux之间传文件使用SCP、Rsync等工具时确保传输的是二进制模式避免工具在传输过程中进行换行符或编码转换。对于文本文件发送前最好确认是UTF-8编码。编码问题就像房间里的灰尘平时不注意积累多了就难以收拾。通过为PowerShell Core建立一个清晰、一致的编码处理策略你就能把这份“灰尘”控制在最小范围让自动化脚本运行得更加顺畅可靠。毕竟我们的时间应该花在实现功能上而不是和乱码字符斗智斗勇。

相关新闻

OpenClaw开源机器人手:技术热度与市场认知的差距分析

OpenClaw开源机器人手:技术热度与市场认知的差距分析

1. 项目概述:当技术理想遭遇市场现实最近和几位做机器人灵巧手和工业抓取方案的朋友聊天,大家不约而同地提到了一个词:OpenClaw。这个词在技术圈,尤其是在机器人抓取、具身智能和开源硬件社区里,热度一直不低。随便翻翻…

2026/10/2 1:50:01 阅读更多 →
IDEA导入Java Web项目全解析:Maven/Gradle、传统项目与正确打开方式

IDEA导入Java Web项目全解析:Maven/Gradle、传统项目与正确打开方式

1. 项目概述:为什么“导入”这个动作值得深究? 刚接触IDEA的Java Web开发者,或者从Eclipse、MyEclipse迁移过来的朋友,大概率都踩过“导入项目”这个坑。表面上看,不就是“File -> Open”吗?但实际操作…

2026/9/30 2:11:24 阅读更多 →
SVG图标动态换色全攻略:从CSS变量到工程化实践

SVG图标动态换色全攻略:从CSS变量到工程化实践

1. 从像素到矢量:为什么SVG是前端开发的“瑞士军刀”如果你还在用PNG、JPG做图标,每次适配不同主题色都要设计师重新切图,那真的有点“石器时代”了。我接手过不少项目,早期因为图标格式问题,后期维护成本高得吓人。直…

2026/9/29 22:43:18 阅读更多 →

最新新闻

互联网商业医疗保险直付平台:从理赔垫付到秒级结算的落地拆解

互联网商业医疗保险直付平台:从理赔垫付到秒级结算的落地拆解

简介:这份PDF文献面向医疗信息化从业者、医院信息中心技术人员及医疗保障研究者,聚焦互联网商业医疗保险直付平台的解决方案。内容系统梳理了商保的概况与现状、传统理赔流程的痛点,并重点论述平台设计原则,包括数据安全、实时性、…

2026/10/2 22:52:08 阅读更多 →
PPTX作为云架构契约:从幻灯片到可执行基础设施

PPTX作为云架构契约:从幻灯片到可执行基础设施

简介:本资源是一份面向智慧城市、大数据与人工智能领域技术决策者及系统架构师的《高效数据中心云基础架构解决方案》专业PPT课件,聚焦企业级IT基础设施向云化演进的核心路径。内容系统阐述动态基础架构管理(AIM)、基础架构云&…

2026/10/2 22:52:08 阅读更多 →
Jev AI研发智能体:任务闭环、本地部署与Codex集成实践

Jev AI研发智能体:任务闭环、本地部署与Codex集成实践

最近社区里聊 Jev 的人越来越多了,但大部分人还停留在"听说它很厉害"的阶段。有人说它是新的 AI 模型,有人说它就是个编码插件,还有人拿它和 Codex 对比,问是不是要抢饭碗。我前阵子也花了不少时间研究 Jev,…

2026/10/2 22:52:08 阅读更多 →
RAGFlow深度解析:企业知识库文档解析与本地部署实战

RAGFlow深度解析:企业知识库文档解析与本地部署实战

1. 先从“文档抽血”说起:RAGFlow 到底解决了什么 企业知识库这条赛道上,开源方案看着一堆,真能拿来当生产力的没几个。RAGFlow 是其中一个让我愿意花时间反复测试的项目。它最打动我的地方,不是又出了一款“聊天问答机器人”&…

2026/10/2 22:52:08 阅读更多 →
从数据传输结构拆解AXI协议:通道、握手与突发机制

从数据传输结构拆解AXI协议:通道、握手与突发机制

AXI协议这个东西,做数字IC和SoC的同学迟早要正面硬刚它。不管你是做设计、验证还是FPGA原型验证,面试时被问AXI的概率几乎是百分之百。但市面上讲AXI的资料两极分化严重:要么是ARM官方手册那种几百页的规格书,啃下来耗神费力&…

2026/10/2 22:52:08 阅读更多 →
TerraScan点云处理实战:参数原理与LiDAR测绘精度控制

TerraScan点云处理实战:参数原理与LiDAR测绘精度控制

简介:本资源是一份面向测绘、遥感、地理信息系统(GIS)及三维建模领域从业者与高校相关专业师生的技术参考文献,系统讲解基于TerraScan软件的LiDAR点云数据处理全流程。内容涵盖LiDAR技术原理与发展现状、TerraScan核心功能&#x…

2026/10/2 22:51:07 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →