99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Win11下PowerShell批量將GBK/ANSI文件轉(zhuǎn)為UTF-8編碼

Win11下PowerShell批量將GBK/ANSI文件轉(zhuǎn)為UTF-8編碼 1. 為什么要折騰這么一件小事亂碼問(wèn)題的根源先說(shuō)個(gè)我實(shí)際遇到的場(chǎng)景。上個(gè)月接手一個(gè)老項(xiàng)目的文檔整理工作同事發(fā)過(guò)來(lái)一個(gè)壓縮包里面是一百多個(gè).txt、.ini、.sql文件說(shuō)是從舊服務(wù)器上導(dǎo)出來(lái)的。我隨手用記事本打開(kāi)一個(gè)滿(mǎn)屏的“錕斤拷”“燙燙燙”直接把我勸退了。再打開(kāi)幾個(gè)有的能正常顯示中文有的全是亂碼同一個(gè)文件夾里居然混著好幾種編碼。這種事兒干過(guò)活的人應(yīng)該都不陌生ANSI 編碼下的中文文本換到現(xiàn)代 Windows 11 環(huán)境里打開(kāi)編碼不對(duì)就是一團(tuán)糟。其實(shí)這里頭有個(gè)很典型的歷史包袱。ANSI 在簡(jiǎn)體中文 Windows 環(huán)境下實(shí)際指的就是GBK/GB2312 編碼體系它用兩個(gè)字節(jié)表示一個(gè)漢字在當(dāng)年 Windows XP、Windows 7 時(shí)代是絕對(duì)的默認(rèn)編碼。而 UTF-8 是后來(lái)互聯(lián)網(wǎng)和跨平臺(tái)場(chǎng)景下的主流編碼用可變長(zhǎng)度字節(jié)表示字符對(duì)中英文混合內(nèi)容更友好。問(wèn)題是現(xiàn)代編輯器VS Code、Notepad、甚至 Windows 11 自帶的記事本默認(rèn)對(duì)無(wú) BOM 的文本幾乎都按 UTF-8 處理。于是老文件里那些 GBK 編碼的中文內(nèi)容被按 UTF-8 去解讀立刻就花了。如果只是幾個(gè)文件用記事本另存為、或者 VS Code 里重新打開(kāi)再改編碼幾秒鐘就搞定。但當(dāng)我面對(duì)的是一個(gè)文件夾里嵌套多個(gè)子文件夾、里面有幾百個(gè)文本文件的情況時(shí)手工轉(zhuǎn)換基本等于自虐。這個(gè)活兒真正高效的做法就是用命令行批量處理。標(biāo)題里說(shuō)的這件事本質(zhì)上是三個(gè)關(guān)鍵詞的組合Win11 環(huán)境、命令行工具鏈、批量編碼轉(zhuǎn)換。這篇文章我把自己實(shí)際驗(yàn)證過(guò)的方案完整梳理一遍包括踩過(guò)的坑和最終可用的腳本給你一條不走彎路的路徑。2. 方案選型為什么偏偏是命令行以及哪個(gè)命令行2.1 轉(zhuǎn)換編碼的常見(jiàn)思路以及各自的局限性先說(shuō)說(shuō)除了命令行之外常見(jiàn)的幾種思路方便你判斷自己到底需不需要繼續(xù)往下看。思路一用編輯器手動(dòng)另存為。這個(gè)就不用多說(shuō)了文件少可以文件多就是災(zāi)難。哪怕 VS Code 能一次打開(kāi)多個(gè)文件每個(gè)文件都得手動(dòng)改編碼、保存、再切換下一個(gè)上百個(gè)文件下來(lái)手都得抽筋。而且這種方式?jīng)]法遞歸處理子文件夾你得自己一層層翻目錄。思路二用 Notepad 的“批量轉(zhuǎn)換”插件。Notepad 確實(shí)有 Convert Encoding 相關(guān)的功能但“批量對(duì)指定文件夾內(nèi)所有文件遞歸轉(zhuǎn)換”這件事需要額外裝插件、配置菜單而且它本質(zhì)上還是一個(gè)圖形界面工具沒(méi)法直接嵌入到你自己的自動(dòng)化流程里。如果你只是想臨時(shí)轉(zhuǎn)一批文件它確實(shí)能用但如果你想把這套邏輯寫(xiě)成腳本、以后定時(shí)跑或者換個(gè)電腦照樣跑它就撂挑子了。思路三用第三方小工具。網(wǎng)上確實(shí)有人做了專(zhuān)門(mén)的編碼轉(zhuǎn)換 GUI 工具但這類(lèi)小工具的來(lái)源和質(zhì)量參差不齊有的還捆綁廣告。我反正不太敢把幾百個(gè)項(xiàng)目文件交給一個(gè)來(lái)歷不明的 exe 去處理。更關(guān)鍵的是這類(lèi)工具很多不支持“只轉(zhuǎn)換指定擴(kuò)展名”“跳過(guò)某些子目錄”這種精細(xì)控制一旦轉(zhuǎn)錯(cuò)了想批量改回來(lái)反而更麻煩。思路四用命令行。這才是適合批量、可重復(fù)、可腳本化的解法。Windows 下原生的命令行環(huán)境有兩種一個(gè)是老的CMD命令提示符一個(gè)是PowerShell。老實(shí)說(shuō)CMD 做這事很別扭它的編碼處理和循環(huán)能力都太弱了。真正好用的是 PowerShell既有完整的循環(huán)、管道、過(guò)濾機(jī)制又能直接調(diào)用 .NET 底層 API讀寫(xiě)文件時(shí)指定編碼是分分鐘的事。而且在 Win11 上PowerShell 5.1 是系統(tǒng)自帶的不用裝任何額外的東西PowerShell 7 需要單獨(dú)裝但也不是必須。所以我的結(jié)論是用 Windows PowerShell 腳本來(lái)做這件事是效率和靈活性的最佳平衡點(diǎn)。2.2 PowerShell 5.1 和 PowerShell 7 的區(qū)別這個(gè)必須先搞清楚寫(xiě)腳本之前有一個(gè)特別容易踩的坑必須先講明白PowerShell 5.1 和 PowerShell 7對(duì)“編碼”的處理邏輯完全不同。PowerShell 5.1 是 Win11 預(yù)裝的老版本它有一個(gè)非?!斑h(yuǎn)古”的設(shè)定——Get-Content命令的-Encoding參數(shù)里有一個(gè)Default選項(xiàng)這個(gè)Default在簡(jiǎn)體中文系統(tǒng)上指的就是ANSIGBK。你用Get-Content -Encoding Default去讀一個(gè) GBK 文件讀出來(lái)的字符串是正確的再配合Out-File -Encoding UTF8寫(xiě)回去就能完成轉(zhuǎn)換。這套邏輯在 5.1 里很順手。但 PowerShell 7以前叫 PowerShell Core就完全不一樣了。它對(duì)標(biāo)的是跨平臺(tái)所以默認(rèn)編碼幾乎一律是 UTF-8 無(wú) BOM-Encoding Default選項(xiàng)直接被移除了你不能再指望“Default”代表 ANSI。在 PowerShell 7 里如果你直接用Get-Content不指定編碼去讀一個(gè) GBK 文件讀出來(lái)的內(nèi)容照樣是亂碼。所以百度一搜“PowerShell 批量轉(zhuǎn)碼”你可能會(huì)看到兩種截然不同的答案根源就在這里。我在下面給出的腳本分成了兩套版本一套是給系統(tǒng)自帶的 5.1 用的一套是給 7 用的如果你已經(jīng)升級(jí)過(guò)的話(huà)。用之前先跑一下$PSVersionTable.PSVersion確認(rèn)版本就不會(huì)出錯(cuò)。2.3 為什么 .NET 方法比 Get-Content 更可靠如果你在網(wǎng)上搜索過(guò)相關(guān)代碼會(huì)發(fā)現(xiàn)有人推薦直接用 .NET 的方法而不是用 PowerShell 的Get-Content/Set-Content我最終給出來(lái)的方案也確實(shí)主要用 .NET 庫(kù)。為什么最核心的原因是Get-Content在讀取文件時(shí)會(huì)把每行當(dāng)成一個(gè)對(duì)象來(lái)處理對(duì)于超大文件或者沒(méi)有結(jié)尾換行符的文件偶爾會(huì)出現(xiàn)莫名其妙的邊界問(wèn)題。而 .NET 的[System.IO.File]::ReadAllText()直接把整個(gè)文件作為字符串讀入內(nèi)存再用[System.IO.File]::WriteAllText()一次性寫(xiě)出去整個(gè)過(guò)程更接近“無(wú)腦搬運(yùn)”對(duì)編碼的掌控也更精確。當(dāng)然它的代價(jià)是如果文件特別大比如幾十 MB 的日志文件一次性讀入內(nèi)存會(huì)有一定壓力。但我實(shí)際測(cè)試過(guò)普通文本文件幾百 KB 到幾 MB壓根沒(méi)壓力。后面我會(huì)提到如果確實(shí)遇到超大文件怎么用流式讀取來(lái)規(guī)避內(nèi)存問(wèn)題。提示轉(zhuǎn)換前建議先備份。一次性寫(xiě)壞幾百個(gè)文件再想恢復(fù)原樣那才真的是欲哭無(wú)淚。3. 核心腳本實(shí)操?gòu)牧愕揭煌瓿膳哭D(zhuǎn)換3.1 環(huán)境確認(rèn)與安全準(zhǔn)備在敲命令之前先花兩分鐘做三件事確認(rèn) PowerShell 版本、創(chuàng)建測(cè)試目錄、備份。打開(kāi) Win11 的“開(kāi)始”菜單搜索 “PowerShell”右鍵選擇“以管理員身份運(yùn)行”。這里不強(qiáng)制要求管理員權(quán)限PowerShell 默認(rèn)權(quán)限也能讀寫(xiě)大部分目錄但如果你要處理的文件夾在C:\Program Files這種受保護(hù)路徑下還是用管理員省心。接著確認(rèn)版本$PSVersionTable.PSVersion看到Major是 5 就是系統(tǒng)自帶的 5.1看到Major是 7 就是新版這會(huì)決定你后面用哪套腳本。然后我強(qiáng)烈建議你先在本地建一個(gè)測(cè)試文件夾里面放三到五個(gè)用“ANSIGBK”編碼保存的中文文本文件這樣轉(zhuǎn)碼之后可以直觀地驗(yàn)證效果不用一上來(lái)就動(dòng)真正的業(yè)務(wù)文件。備份這一步推薦最笨但最可靠的方式——直接復(fù)制整個(gè)文件夾到另一個(gè)位置?;蛘呷绻懔?xí)慣用命令行PowerShell 里一條命令就行Copy-Item -Path D:\SourceFolder -Destination D:\BackupFolder -Recurse3.2 最簡(jiǎn)版本W(wǎng)in11 自帶 PowerShell 5.1 一鍵轉(zhuǎn)換如果你用的是系統(tǒng)自帶的 PowerShell 5.1那代碼可以寫(xiě)得非常簡(jiǎn)潔。腳本中最關(guān)鍵的參數(shù)有三個(gè)目標(biāo)文件夾路徑、文件擴(kuò)展名過(guò)濾器、是否遞歸子目錄。$targetDir D:\TargetFolder $extension *.txt $recurse $true Get-ChildItem -Path $targetDir -Filter $extension -Recurse:$recurse | ForEach-Object { $filePath $_.FullName # 讀取 ANSI即 GBK內(nèi)容到字符串 $contentText Get-Content -LiteralPath $filePath -Encoding Default -Raw # 以 UTF-8 無(wú) BOM 格式寫(xiě)回 [System.IO.File]::WriteAllText( $filePath, $contentText, [System.Text.UTF8Encoding]::new($false) ) Write-Host Converted: $filePath }逐個(gè)拆解一下免得你復(fù)制完心里沒(méi)底Get-ChildItem -Path $targetDir -Filter $extension -Recurse:$recurse這一步負(fù)責(zé)把指定目錄下所有符合條件的文件都找出來(lái)。-Filter支持通配符*.txt就只轉(zhuǎn)文本文件如果你要轉(zhuǎn).sql就改成*.sql想轉(zhuǎn)所有文件就改成*.*非常靈活。-Recurse參數(shù)決定是否深入子文件夾。Get-Content -LiteralPath $filePath -Encoding Default -Raw這一行的重點(diǎn)是-Encoding Default。在 PowerShell 5.1 里Default就是 ANSI。加-Raw是為了讓整個(gè)文件內(nèi)容作為一個(gè)整體字符串返回而不是拆成行數(shù)組這樣寫(xiě)回去的時(shí)候不會(huì)因?yàn)樾形卜?hào)差異而變形。[System.IO.File]::WriteAllText($filePath, $contentText, [System.Text.UTF8Encoding]::new($false))這一行把讀出來(lái)的字符串用 UTF-8 編碼寫(xiě)回原文件。new($false)里的布爾值代表“不帶 BOM”。BOM 是文件開(kāi)頭的一段特殊字節(jié)序標(biāo)記某些老程序不認(rèn)它所以更多時(shí)候我們選擇不帶 BOM 的 UTF-8。寫(xiě)完腳本保存成.ps1文件或者在 PowerShell 窗口里直接粘貼逐行執(zhí)行都能跑通。3.3 通用版本兼容 PowerShell 5.1 和 7 的寫(xiě)法剛才說(shuō)過(guò)了PowerShell 7 里沒(méi)有-Encoding Default。所以如果你的機(jī)器裝的是 PowerShell 7或者你想寫(xiě)一個(gè)“任何版本都能跑”的腳本需要用 .NET 的編碼類(lèi)來(lái)手動(dòng)指定 ANSI。$targetDir D:\TargetFolder $extension *.txt $recurse $true # 關(guān)鍵顯式指定 GBK 編碼 $ansiEncoding [System.Text.Encoding]::GetEncoding(GBK) $utf8Encoding [System.Text.UTF8Encoding]::new($false) Get-ChildItem -Path $targetDir -Filter $extension -Recurse:$recurse | ForEach-Object { $filePath $_.FullName # 用 .NET 方法讀取顯式指定 ANSI 編碼 $contentText [System.IO.File]::ReadAllText($filePath, $ansiEncoding) # 寫(xiě)入 UTF-8 無(wú) BOM [System.IO.File]::WriteAllText($filePath, $contentText, $utf8Encoding) Write-Host Converted: $filePath }這一版的關(guān)鍵區(qū)別就在[System.Text.Encoding]::GetEncoding(GBK)。注意這里我寫(xiě)的是GBK而不是GB2312。原因是GBK 是 GB2312 的超集它向下兼容 GB2312同時(shí)能處理更多生僻字。在簡(jiǎn)體中文 Windows 上ANSI 指的實(shí)際就是 GBK所以用 GBK 去讀是在兼容性上最穩(wěn)的。如果你處理的是繁體中文環(huán)境那得改成GetEncoding(BIG5)如果是日文環(huán)境對(duì)應(yīng)的編碼名是EUC-JP或Shift_JIS。這一點(diǎn)后面講排錯(cuò)的時(shí)候還會(huì)再提到。3.4 按需擴(kuò)展只處理特定目錄層級(jí)、跳過(guò)特殊文件夾實(shí)際操作中經(jīng)常會(huì)遇到“只需要轉(zhuǎn)某個(gè)子目錄下的文件其他子目錄不要?jiǎng)印钡男枨?。不用急著改腳本結(jié)構(gòu)Get-ChildItem本身就支持路徑過(guò)濾你可以把整個(gè)Get-ChildItem換成兩次調(diào)用或者用Where-Object做二次過(guò)濾。舉例說(shuō)明假設(shè)目錄結(jié)構(gòu)是這樣的D:\Project ├── docs\ ├── src\ # 只轉(zhuǎn)這里面的 .java 文件 ├── test\ └── include\那么你的目標(biāo)路徑直接寫(xiě)成D:\Project\src把$extension改成*.java就行。如果不想遞歸到某些子目錄一個(gè)比較笨但有效的做法是先枚舉目錄再在腳本里判斷Get-ChildItem -Path $targetDir -Recurse -Directory | Where-Object { $_.Name -notin (node_modules, .git, dist) } | ForEach-Object { Get-ChildItem -Path $_.FullName -Filter $extension | ForEach-Object { # 轉(zhuǎn)碼邏輯和上面一樣 } }這個(gè)寫(xiě)法會(huì)把指定目錄下所有子目錄都列出來(lái)過(guò)濾掉node_modules、.git這類(lèi)你絕對(duì)不想碰的文件夾然后再逐層處理文件。雖然代碼多了一點(diǎn)但在真實(shí)項(xiàng)目里非常實(shí)用。3.5 高級(jí)參數(shù)說(shuō)明UTF-8 到底要不要 BOM關(guān)于 BOM 這個(gè)問(wèn)題值得單獨(dú)說(shuō)一段。BOMByte Order Mark是 Unicode 規(guī)范里用來(lái)標(biāo)識(shí)文本編碼和字節(jié)序的一組特殊字節(jié)。UTF-8 的 BOM 在文件開(kāi)頭是EF BB BF這三個(gè)字節(jié)。很多從 Windows 老環(huán)境出來(lái)的人習(xí)慣了帶 BOM 的 UTF-8因?yàn)橛浭卤灸芤谎圩R(shí)別。但放到 Linux、Git、或者某些命令行工具里BOM 反而會(huì)被當(dāng)成特殊字符導(dǎo)致一些莫名其妙的報(bào)錯(cuò)。比如在 Linux 下用grep匹配文件內(nèi)容第一個(gè)字符如果帶 BOM你可能匹配不上再比如有的編譯工具鏈會(huì)因?yàn)槟阍创a開(kāi)頭多了三個(gè)字節(jié)直接給你報(bào)錯(cuò)。我的做法是**如果這個(gè)文件要被程序讀取源碼、配置、腳本一律轉(zhuǎn)成無(wú) BOM 的 UTF-8如果只是給人看的文檔帶不帶 BOM 其實(shí)無(wú)所謂。**上面腳本里寫(xiě)new($false)就是無(wú) BOM如果你想改成帶 BOM把$false換成$true就行。4. 常見(jiàn)問(wèn)題與排查實(shí)錄那些年我踩過(guò)的坑4.1 轉(zhuǎn)完之后文件反而變成亂碼了是怎么回事這是最讓人崩潰的問(wèn)題轉(zhuǎn)之前源文件好歹在記事本里還能看轉(zhuǎn)完之后直接全花。十有八九是你讀取的時(shí)候編碼就用錯(cuò)了。舉一個(gè)我實(shí)際遇到的例子。同事給我的文件用 Notepad 看右下角顯示的是 “ANSI”我當(dāng)時(shí)就直接用Get-Encoding(GBK)去讀了。轉(zhuǎn)完一部分之后我發(fā)現(xiàn)有幾個(gè)文件出現(xiàn)少量錯(cuò)別字個(gè)別生僻字直接變成了“?”。排查了一下發(fā)現(xiàn)這些文件不是標(biāo)準(zhǔn) GBK而是GB18030編碼保存的里面包含了超出 GBK 字符集的擴(kuò)展?jié)h字。解決辦法是把編碼讀取參數(shù)換成GB18030。GB18030 是 GBK 的進(jìn)一步擴(kuò)展理論上能表示幾乎所有中文字符而且它是向下兼容 GBK 的。換句話(huà)說(shuō)用 GB18030 去讀 GBK 文件沒(méi)問(wèn)題但用 GBK 去讀 GB18030 文件就可能丟字。如果你不確定源文件到底是哪種直接統(tǒng)一用GetEncoding(GB18030)是最穩(wěn)的選擇。4.2 轉(zhuǎn)換后中文正常但英文和數(shù)字旁邊多了一個(gè)“?”這個(gè)癥狀我一開(kāi)始碰到還以為是文件里原來(lái)就有的東西后來(lái)才發(fā)現(xiàn)問(wèn)題出在編碼轉(zhuǎn)換器遇到無(wú)法映射的字符時(shí)的默認(rèn)替代行為。當(dāng)你用某種編碼讀文件時(shí)如果遇到該編碼無(wú)法表示的字符比如 GBK 里沒(méi)有某個(gè)特殊符號(hào)或者編碼聲明與實(shí)際內(nèi)容不符.NET 會(huì)把那個(gè)位置替換成一個(gè)默認(rèn)的替代字符——通常就是“?”。排查思路隨便取一個(gè)出問(wèn)題的文件先用十六進(jìn)制編輯器看一下原始字節(jié)再對(duì)比轉(zhuǎn)換后的字節(jié)看看多出來(lái)的“?”在哪些位置。如果“?”出現(xiàn)的規(guī)律和某些特殊字符比如€、?對(duì)得上那說(shuō)明源文件其實(shí)不是純中文 ANSI里面混了其他編碼的字符。這時(shí)候你得先確認(rèn)這些文件的真實(shí)編碼再?zèng)Q定讀的時(shí)候用什么編碼。在腳本層面你可以顯式指定替換策略$ansiEncoding [System.Text.Encoding]::GetEncoding( GBK, [System.Text.EncoderFallback]::ExceptionFallback, [System.Text.DecoderFallback]::ExceptionFallback )這樣設(shè)置之后一旦遇到無(wú)法解碼的字節(jié)會(huì)直接拋出異常提示你而不是靜默地替換成“?”。4.3 PowerShell 腳本執(zhí)行時(shí)提示“因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本”Win11 默認(rèn)的 PowerShell 執(zhí)行策略是Restricted只允許運(yùn)行單個(gè)命令不允許執(zhí)行.ps1腳本文件。這時(shí)候你直接執(zhí)行腳本文件會(huì)報(bào)錯(cuò)。解決方法有幾個(gè)臨時(shí)開(kāi)放當(dāng)前會(huì)話(huà)的執(zhí)行策略只對(duì)當(dāng)前窗口有效關(guān)掉就恢復(fù)Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass用-ExecutionPolicy Bypass參數(shù)直接啟動(dòng) PowerShellpowershell -ExecutionPolicy Bypass -File D:\Script\convert.ps1如果你是 Win11 系統(tǒng)自帶終端Windows Terminal也可以在配置文件里把默認(rèn)執(zhí)行策略改寬。提示Set-ExecutionPolicy改的是系統(tǒng)級(jí)的執(zhí)行策略改完記得用Get-ExecutionPolicy檢查確認(rèn)。如果你只是臨時(shí)用一下用-Scope Process就夠了別動(dòng)全局。4.4 文件被占用或者無(wú)權(quán)限寫(xiě)入怎么處理如果你的目標(biāo)文件夾在系統(tǒng)目錄或者有一個(gè)程序正好打開(kāi)了某個(gè)文件比如數(shù)據(jù)庫(kù)服務(wù)正在讀一個(gè).sql文件WriteAllText就會(huì)拋 “UnauthorizedAccessException” 或 “IOException”。處理方式有兩個(gè)維度一是權(quán)限維度用管理員身份運(yùn)行 PowerShell或者給當(dāng)前用戶(hù)添加目標(biāo)文件夾的“修改”權(quán)限。二是文件占用維度腳本里加一層容錯(cuò)遇到占用就跳過(guò)并記錄日志try { [System.IO.File]::WriteAllText($filePath, $contentText, $utf8Encoding) Write-Host Converted: $filePath } catch { Write-Warning Failed: $filePath - $($_.Exception.Message) }4.5 超大文件轉(zhuǎn)換時(shí)內(nèi)存飆升怎么辦前面說(shuō)過(guò)的ReadAllText會(huì)把整個(gè)文件讀入內(nèi)存如果碰到一個(gè)幾百 MB 的超大文件內(nèi)存占用會(huì)非常難看。遇到這種極端場(chǎng)景用流式讀寫(xiě)的思路更穩(wěn)。簡(jiǎn)單的實(shí)現(xiàn)思路用StreamReader按塊讀取再用StreamWriter按塊寫(xiě)入。你可以把整個(gè)腳本里的核心轉(zhuǎn)換部分替換成$readEncoding [System.Text.Encoding]::GetEncoding(GB18030) $writeEncoding [System.Text.UTF8Encoding]::new($false) $reader [System.IO.StreamReader]::new($filePath, $readEncoding) $writer [System.IO.StreamWriter]::new($filePath, $false, $writeEncoding) try { while ($null -ne ($line $reader.ReadLine())) { $writer.WriteLine($line) } } finally { $writer.Dispose() $reader.Dispose() }這里有個(gè)注意事項(xiàng)用ReadLineWriteLine的方式會(huì)保證行尾統(tǒng)一為當(dāng)前系統(tǒng)的換行符。如果你的源文件是 Linux 風(fēng)格的LF換行轉(zhuǎn)完后可能變成 Windows 風(fēng)格的CRLF內(nèi)容不變格式變了。要是你特別在意這個(gè)可以考慮用StreamReader.ReadBlock配合緩沖區(qū)原樣復(fù)制不過(guò)常規(guī)場(chǎng)景下這種差異基本無(wú)感。4.6 常見(jiàn)問(wèn)題速查表癥狀可能原因解決辦法轉(zhuǎn)換后全是“?”讀取編碼不對(duì)GBK 無(wú)法覆蓋某些字符改用 GB18030 讀取轉(zhuǎn)換后文件變亂碼源文件其實(shí)是 UTF-8被當(dāng)成 ANSI 讀了一遍先確認(rèn)源文件真實(shí)編碼不亂套“ANSI 一律是 GBK”腳本報(bào)錯(cuò)“禁止運(yùn)行”執(zhí)行策略限制Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass寫(xiě)入時(shí)提示文件被占用文件被其他程序鎖定用 try/catch 跳過(guò)并記錄或關(guān)閉占用程序轉(zhuǎn)換后換行符變了用 ReadLine/WriteLine 導(dǎo)致用流式按塊復(fù)制或接受換行符變化個(gè)別文件轉(zhuǎn)出來(lái)是空的原文件本身就是空文件或純 ASCII 無(wú)字符腳本里加個(gè)文件長(zhǎng)度判斷空文件直接跳過(guò)5. 從腳本到工具如何把這套邏輯固化成日常可用的命令5.1 保存成 .ps1 腳本文件最直接的固化方式就是把上面通用版腳本保存成一個(gè).ps1文件比如命名為Convert-ToUtf8.ps1。這樣以后要用的時(shí)候直接打開(kāi) PowerShell 執(zhí)行一遍即可。如果你連打開(kāi) PowerShell 都嫌麻煩可以做一個(gè).bat文件來(lái)調(diào)起它。比如你的腳本放在D:\Scripts\Convert-ToUtf8.ps1在同一個(gè)目錄下建一個(gè)run_convert.bat內(nèi)容如下echo off powershell -ExecutionPolicy Bypass -File D:\Scripts\Convert-ToUtf8.ps1 pause這樣雙擊.bat文件就能執(zhí)行轉(zhuǎn)換。腳本里的目標(biāo)路徑改一次就行下次有同樣需求直接雙擊。5.2 把腳本設(shè)計(jì)得更通用傳參而不是改代碼上面這種做法有一個(gè)缺點(diǎn)每次目標(biāo)路徑變了你得改腳本內(nèi)容。如果你經(jīng)常需要處理不同文件夾更合理的做法是把腳本變成一個(gè)“帶參數(shù)的函數(shù)”。在 PowerShell 里這很容易實(shí)現(xiàn)腳本開(kāi)頭定義參數(shù)param( [Parameter(Mandatory$true)] [string]$TargetDir, [string]$Filter *.txt, [switch]$Recurse $true ) $ansiEncoding [System.Text.Encoding]::GetEncoding(GB18030) $utf8Encoding [System.Text.UTF8Encoding]::new($false) Get-ChildItem -Path $TargetDir -Filter $Filter -Recurse:$Recurse | ForEach-Object { $filePath $_.FullName $contentText [System.IO.File]::ReadAllText($filePath, $ansiEncoding) [System.IO.File]::WriteAllText($filePath, $contentText, $utf8Encoding) Write-Host Converted: $filePath }然后調(diào)用方式就變成.\Convert-ToUtf8.ps1 -TargetDir D:\NewProject -Filter *.sql -Recurse這樣你就不用每次編輯腳本了路徑、擴(kuò)展名、是否遞歸都通過(guò)參數(shù)控制。甚至可以在.bat文件里用%1包裝成“拖拽文件夾到批處理圖標(biāo)上就能轉(zhuǎn)換”的效果echo off powershell -ExecutionPolicy Bypass -File D:\Scripts\Convert-ToUtf8.ps1 -TargetDir %1 pause把文件夾拖到這個(gè)批處理文件上它就會(huì)自動(dòng)讀取%1這個(gè)路徑直接開(kāi)轉(zhuǎn)。我這兩年處理外部交付的項(xiàng)目文件都是這么干的效率提升非常明顯。5.3 什么情況下你需要額外注意源文件的編碼識(shí)別腳本是無(wú)腦的但真實(shí)文件系統(tǒng)是混亂的。你可能會(huì)遇到一個(gè)文件夾里既有 ANSI 文件又有本來(lái)已經(jīng)是 UTF-8 的文件。你又想只把 ANSI 的轉(zhuǎn)換掉不碰已經(jīng)是 UTF-8 的那些怎么辦方法一轉(zhuǎn)換前檢測(cè)文件是否包含非法 UTF-8 序列。思路是用 UTF-8 編碼去讀取文件如果拋出異常說(shuō)明它大概率不是 UTF-8function Test-IsValidUtf8($path) { try { $null [System.IO.File]::ReadAllText($path, [System.Text.UTF8Encoding]::new($false, $true)) return $true } catch { return $false } }這里[System.Text.UTF8Encoding]::new($false, $true)的第二個(gè)參數(shù)$true表示啟用嚴(yán)格校驗(yàn)遇到非法字節(jié)就拋異常。實(shí)際用的時(shí)候先把所有文件過(guò)一遍這個(gè)函數(shù)把返回$false的文件收集起來(lái)再批量轉(zhuǎn)換。方法二直接全量統(tǒng)一轉(zhuǎn)換。如果你的應(yīng)用場(chǎng)景能接受“所有文件都變成 UTF-8”那就無(wú)所謂了反正 UTF-8 文件再轉(zhuǎn)一遍 UTF-8 也不會(huì)壞。這種方法省事唯一的風(fēng)險(xiǎn)是文件里如果有其他特殊編碼比如 UTF-16你拿 ANSI 去讀就會(huì)讀錯(cuò)然后寫(xiě)回之后文件就真的壞了。所以我的建議還是如果文件夾來(lái)源復(fù)雜先用方法一篩一遍。5.4 與 Win11 自帶功能的時(shí)間線為什么不用記事本批量處理有人可能會(huì)問(wèn)Win11 的記事本不是已經(jīng)能識(shí)別各種編碼了嗎確實(shí)新版記事本在打開(kāi)文件時(shí)能自動(dòng)識(shí)別編碼右下角狀態(tài)欄還能顯示當(dāng)前編碼甚至另存為時(shí)能選擇“UTF-8 with BOM”“UTF-8”“UTF-16 LE”等選項(xiàng)。但這里的關(guān)鍵是記事本沒(méi)有批量處理能力它一次只能打開(kāi)一個(gè)文件。對(duì)上百個(gè)文件來(lái)說(shuō)打開(kāi)一個(gè)、轉(zhuǎn)換一個(gè)、保存一個(gè)、關(guān)掉一個(gè)這個(gè)流程重復(fù)一百遍任何正常人都受不了。命令行方案的真正價(jià)值是“一次性處理”而且你把腳本寫(xiě)好了以后它就是一件順手拈來(lái)的工具不需要每次重新思考。6. 實(shí)際體會(huì)與盡可能少走的彎路最后想聊兩句不扯技術(shù)純經(jīng)驗(yàn)。做這類(lèi)批量轉(zhuǎn)換最忌諱的就是上來(lái)就動(dòng)手。我第一次給別人處理項(xiàng)目文件的時(shí)候沒(méi)做備份也沒(méi)驗(yàn)證直接跑腳本結(jié)果把一個(gè)本來(lái)就好的 UTF-8 文件用 ANSI 讀了一遍寫(xiě)完直接報(bào)廢最后用了半天時(shí)間去還原。從那以后我給自己定了一個(gè)鐵律凡是批量操作第一件事永遠(yuǎn)是備份第二件事永遠(yuǎn)是先拿兩三個(gè)文件做小范圍測(cè)試確認(rèn)沒(méi)問(wèn)題了再全量執(zhí)行。另外源文件的編碼識(shí)別不能想當(dāng)然。很多工具顯示“ANSI”其實(shí)指的是“系統(tǒng)當(dāng)前默認(rèn) ANSI 代碼頁(yè)”簡(jiǎn)體中文系統(tǒng)上是 GBK繁體系統(tǒng)上可能是 BIG5如果你把這些文件拿到一個(gè)日文系統(tǒng)的 Win11 上去跑同樣是“ANSI”讀出來(lái)的內(nèi)容完全不一樣。所以如果你的工作環(huán)境涉及到其他語(yǔ)言版本的 Windows或者文件可能來(lái)自不同地區(qū)的同事寫(xiě)腳本時(shí)盡量用明確的編碼名GB18030、Big5、Shift_JIS不要依賴(lài)“Default”這種模糊概念。這套腳本我現(xiàn)在還用著每隔一段時(shí)間就會(huì)因?yàn)椴煌枨蠹右稽c(diǎn)小功能比如支持把編碼信息輸出到一個(gè)日志文件、支持把轉(zhuǎn)換結(jié)果統(tǒng)計(jì)匯總。本質(zhì)上它已經(jīng)不是一個(gè)“一次性腳本”而是一個(gè)不斷積累的小工具箱。你只要把基礎(chǔ)版本跑通后續(xù)按需擴(kuò)展它會(huì)越來(lái)越順手。希望這篇文章能讓你少走幾步彎路直接把這件事一次做對(duì)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色日本五月天| 丰满少妇猛烈A片免费看观看| 99热日本| 91九色超碰正在播放| 亚洲熟女色| 99在线观看这里都是精品| 人人摸人人干| 天堂无码人妻精品AV一区| 99re热免费观看视频精品| AV动漫不卡无码免费| 无码少妇高潮喷水A片免费| 99热6精品| 久久ww| 成人无码中文| WWW.HENHENL.| 激情亚洲五月| 无码激情AAAAA片-区区| 伊人久久婷婷| 熟妇人妻中文字幕无码老熟妇| 丁香六月婷婷综合缴| 超黄亚洲瑟瑟网站| 亚洲婷婷月丁香五月| 人妻视频在线| 玖玖激情五月天| 俺也去五月婷婷丁| 亚洲欧洲中文日韩久久AV乱码| 久久天天| 91久久九久久九久久九久久九久久| 亚洲激情五月婷婷日日| 九热在线这里有精品6| 色五月中文字幕| 免费黄网不卡AV| 色噜噜狠狠一区二区三区| 色五月婷婷五月| 少妇口诉沐足视频播放器网址| 色播播婷婷| 综合激情四射一theav| 91久操| 六月丁香av| 亚洲热久久| 久久这里只有精品视频26| 婷婷丁香五月麻豆| 伊人五月天综合网| 五月中旬婷婷丁香六| 五月开心六月婷婷在线播放网站| 精品综合久久久久久五月天| 99久久思思| 久久婷婷五月国产激情综合片| 九九这里是免费的视频5| 67久久| 久久久99精品免费观看| 春色激情| 婷婷九月丁香天堂丁香天堂| 久久久.COM| 啪啪六月婷婷| 丁香色情五月综合激情| 色婷婷在线综合色播网| 色情一区二区播放| 99色精品| 色五月大香蕉| 五月天婷婷青青草| 激情图片99| www.激情五月天.com| 99热热热天天人人人超超碰| 9视频1在线| 9久久网| 色五月大| 五月丁香拍拍激情综合| 丁香五月婷婷手机| 99操| 色吧网综合| 亚洲无码猫咪| 亚洲色色色色色色色色色| 异能之下短剧免费观看全集| 99久久精品网| 五月婷婷啪啪啪| 丁香九月激情| 1024在线视频| 欧美丁香婷婷天天操| 2020久久婷婷五月| 操骚货在线| 丁香六月狠狠干| 26uuu最新地址| 五月天精品| www.99热| 国产肏屄大片| 九九热在线观看视频网站| 99热久久这里只有精品2010| 激情丁香五月婷婷| 综合 蜜月 婷婷| 婷婷五月天六点丁香五月| 99热国产这里只有| 九艹在线| 99干免费视频| 热热久久精品视频| 超碰在线免费| 色情成人五月天| 99人妻碰碰碰久久久久视| 超碰人妻在线| 天天色天天| 99碰碰| 久久婷青青草原| 亚洲精品在线视频| 五月天激情AV| 97夫妻超碰| 久9免费视频| 婷婷五月色花丁香社区| 激情人妻综合| 色色网91| 婷婷激情丁香六月| 欧美性做爰大片免费看办公室| 91av无码| 天天 青草 丝袜制服 在线| 久青草影院| 日韩精品无码一区二区| 玖热精品综合视频| 久热 91| 婷婷亚洲在线| 五月天激情开心网| 五月天激情小说| 最新日韩久热免费视频看看| 夜夜撸日日骑| www.丁香黄色五月天人与| 99无码超碰| 婷婷色爱| 91N 一起草| 开心六月丁香五月婷婷| 五月丁香色| 超碰97久久| 激情五月六月丁香| av亚洲国产小电影| www.五月激情.com| 久久97久久99久久综合欧美| 婷婷丁香成人在线视频| 国产精品人成A片一区二区| 久久多色| 五月婷婷激情综合网| 婷婷日本色| 久热最新视频 | 五月婷六月| 波多野结衣不卡AV| 婷婷久久亚洲| 少妇婷婷五月天| 激情五月天www| 九九99久久| 丁香综合婷婷开心激情网| 日韩av在线免费观看| 五月的色婷婷高潮| 久久看婷婷| 成人va在线播放| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 欧美在线| 欧美激情综合色综合色| 成人 九九九九| 深爱五月婷| 五月丁香色色色| 六月婷婷九月丁香亚洲综合| 欧美丁香五月| 大香蕉AV在线| 国产一区男女| 婷婷综合日本| 日本人妻A片成人免费看片| 天天做天天爱天天摸| 精品久久99码| 日日肏天天操| 爆乳熟妇一区二区三区爆乳| 色九月| 狠狠久久婷五月综合色| 日韩人妻无码精品| 中文人妻主播久久| 五月婷婷综合色啪首页| 五月婷婷色播| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 综合狠狠干| 精品国产乱码久久久久久免费| 五月丁香六月婷婷中文版| 亚洲日本韩国| www.久久99热地址发布| 色五月无码| 国产SUV精品一区二区883| 五月婷婷色啪| 亚洲AAA| 国产精品第一国产精品| 狠狠激情五月天| 日本在线视频看se99| 99久久6| 五月丁香888| 狠狠色狠狠干| 五月天激情小说欧美激情| 91九色PORNY肉丝在线| 久久久人妻门| 久久人操| 一区二区三区四日本| 99精品色色| 国产偷人爽久久久久久老妇APP| 六月丁香综合999| 无码碰碰| 色人久久| 天天狠狠色综合| 热久久婷婷| 色五月五月天色婷婷色五月| 爱爱色五月天| 色婷精品91| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 婷婷五月天开心网| 色五月婷婷天天操夜夜操| 亚洲在线网站| 久久伊人五月天| 丁香五月视频在线观看| 久热精品9999| 性做爰1一7伦| 91爱操| www.夜夜操.con| 婷婷性爱五月天丁香网| 天天做天天爱天天爽| 丁香婷停五月激情综合深爱| 五月婷六月| 另类视频五月天| 99热国产这里只有精品| 丁香五月婷婷姐| 狠狠 久久| 天天插天天插天天插天天插| 五月丁香综合在线| 婷婷五月天BBw| 久99久视频| 久久久天堂国产精品女人| 热99精品视频五月| 五月丁香六月婷婷国产视频| 久久九九99字幕| a九九热www| 欧美综合五月天婷婷tin| 乱码操操| 伊人玖玖精品| 婷婷开心激情五月激情网| 婷婷六月丁香激情| 亚洲色图五月丁香| 欧美123区免| 伊人无码高清| 综合久| 综合在线色婷婷| 五月天婷婷激情干干| 久久99综合| 婷综合六月| 99无码精品| 超碰在线超碰| 天天综合精品| 亚洲婷婷五月天激情| 日本精品。999| 婷婷 丁香 久久| 精品综合网在线| 成人片黄网站色大片免费毛片| 五月久久| 91九九九色在| 色婷婷狠狠禁18久久| 99综合视频一体| 26uuu成人网| 丁香亭亭激情四射| 亚洲AV永久无码影院黑人| 嫩草AV久久伊人妇女超级A| 欧美视频五区| 91一起操| 久久五月天综合| 色五月婷婷av| 久久女人天堂| 亚洲色五月| 97精品综合| 五月婷婷成人| 无码人妻电影| 日日噜噜夜夜狠狠久久丁香五月| 五月婷婷六月丁香| 欧美经典片免费观看大全| 亚洲婷婷五月天| 91久久婷婷| 8区视频在线| 丁香在线视频| 五月婷婷啪啪啪| 五月丁香色综合| 天天舔天天摸| 久99久视频| A久久| 丁香午夜天| 激情五月影院| 婷婷成人基地| 色综合久网| 久久区区一二三av| 超碰成人在线观看| 开心五月婷婷在线| 久久色亭亭五月天| 伊人激情影院| av在线免费播放观看| 中文字幕不卡网站| 中文字幕AV在线播放| 九九精品99| 中文字幕丰满乱孑伦无码专区| 国内婷婷丁香社区在线播放| 天天干天天爽天天操| 色综合天天综合成人网| 色婷婷丁香五月| 亚洲人妻AV| 五月天开心色色网| 五月婷婷深深爱| 久久婷婷伊人| 丁香五月色五月婷婷宗合| 99久久综合| 亚洲免费看片| 99ri网站在线观看| 激情五月丁香五月| 乱色色色| 色爱亚洲| 九一牛视频探花| 最新av在线观看| 五月丁香婷婷AV天堂| 3www激情| 日本一级黄色电影| 色吊丝永久访问网址| 99ri视频| 韩国激情五月天综合网| 99热官网精品在线| 婷婷五月网图片区| 天天干天天爽天天爽| 免费视频99| 亚洲精品视频在线播放| 一本色道久久综合狠狠躁小说| 婷婷激情五月综合| 五月天激情久久| 色婷婷五月天| 婷婷狠狠操| 久久小视频免费| 九九久热| 爱久久小说下载网| 久99| 97碰| 91丁香婷婷综合久久欧美| 久久99综合| 操你av| 久/久精品99看9| 香蕉久久五月| 日日噜噜久久婷婷五月天| 九九色图| 六月丁香开心婷婷欧美| 五月天久久www| 成人短视频在线| 丁香婷婷激情网站| 97色伦另类图片小说视频 | 天天网站天天爽| www.婷婷五月天| 久久97久久99久久综合欧美| 婷婷五月天中文字幕.| 亚州色色色| 疯狂做受XXXX高潮A片| www99热| 狠狠色大香蕉| 五月天AV大香蕉| 色婷婷六月精品| 丁香五月婷婷啪啪| 久久视屏这里只有久久| 91热99| 婷婷五月18永久免费网站| 日日干夜夜撸夜夜骑| www.日日夜夜.com| 久久9精品| 99热这里只有精品9| 久久se 综合网| 六月丁香婷婷视频综合在线观看| 99色干| 激情伊人网| 色婷婷色婷婷五月| 美女爆乳18禁www久久久久久| 日韩五月天婷婷| 九九在线视频| 丁香六月婷婷综合麻豆| Www.sesese丁香| 爱的综合网| 嫩BBB槡BBBB搡BBBB| 大香蕉九九| 丁香五月天黄色片| 秋霞免费三级片| 色婷久| 超碰免费大香蕉| 色色五月婷婷久久| 五月丁香久久网| 丁香六月婷婷开心| 久久五月天激情美女| 久九色| 久久色五月天| 五月激香蕉网| 丁香五月人妻| 国产精品社区| 女人高潮内射99精品| 婷婷五月天堂| 色色色色色色色色色影院| 天天日,夜夜爽| 成人免费黄色短视频| 五月婷婷激情69| 九月丁香八月婷婷加勒比| 丁香六月天之亚州热女| 97超碰人人操| 五月婷婷色欲| 亚洲综合色网| 精热在线综合网| 狠狠狠狠狠| 在线色五月婷婷| 91久女| 涩涩五月天| 啪啪啪综合网| 欧美,日韩成人在线| 久久婷婷五月天激情| 久操无码| 日本人妻伦在线中文字幕| 天天爽免费视频| 99精品人人| 国产成人网| 激情五月婷婷老师| 婷婷五月丁香综合| av操B网站| 91超碰在线观看| 婷婷五月天伊人在线| 五月天丁香久久综合| 六月丁香婷婷综合在线| 亚洲五月丁香综合网| 九九丁香社区欧美激情| 人妻久久久久久| 色婷婷五月综合在线| 99久久新视频| 农村熟妇高潮精品A片| 综合五月丁香六月婷婷| 大香蕉婷婷| 天天综合色99| 国产全是老熟女太爽了| 婷婷五月综合网| 99热精品10| 午夜成人在线免费视频| 碰97 久| 激情五月天视频| 激情婷婷综合| 九九aV| 色婷婷五月天av在线| 天堂久久婷婷| 99精品在这里| 婷婷六月丁香1| 丁香花色色网| 五月婷婷婷| 在线观看免费视频| 五月天色婷婷综合| 色五月色图| www.五月天激情| 六月婷婷视频| 精品九九在线观看视频| 精品在线网站| 99视频网址| 国产精品成人网址| 播丁香五月婷婷欧美| 丁香五月电影| 久操大| 99re热视频这里只精品| 天天檫天天爽| 婷婷五月开心中文字幕在线| 第四色婷婷色五月| 婷婷区日本| 天天色综和网| 超碰人人操在线| 十区av| 男女av免费看| 日韩啪啪视品| 五月婷性爱| 国产乱子轮XXX农村| 婷婷六月啪啪| 五月激情六月宗合| 色婷婷综合网| 久久婷综合| 亚洲精品无码久久| 99精色| 97超碰人人操| 色综合激情| 狠狠香蕉| 天天日天天色| 禁欲电影完整版在线播放| 色色日本| 思思热在线观看| 亚洲精品久久久久久久久久飞鱼| 香蕉久久国产AV一区二区| 99自拍视频| 亚洲精品视频在线播放| 亚洲妇女熟BBW| 久色| 国产毛片操B| 97色精品视频 | 五月天婷婷久久综合| www天天干| se99在线| 婷婷色狠狠| 夜夜操天天干| 亚洲AV日韩无码| www久| 亚洲国产精品SUV| 中字幕视频在线永久在线观看免费 | 国产原创视频91九色| 国产亚洲成人综合| 五月久熟女| 五月天狠狠网站| 色六月天天激情综合网| 色综合久久88色综合天天| 欧美成人网99网| 日本丁香五月| 99爱精品| 婷婷五月丁香成人网| 香蕉五月婷婷| 亚洲综合激| 99热成人在线观看| 97精品欧美91久久久久久久| 另类少妇人与禽zOZZ0性伦| 激情AV综合| 97碰| 五月综合六月丁| 丁香五月激情在线| 国产成人亚洲综合A∨婷婷| 嫩草AV久久伊人妇女超级A| 色婷婷人人| 激情综合无码| 亚洲色色色色| 欧美一级色| 四虎国产精品永久在线国在线| 超碰在线免费观看3 9| 五月丁香欧美综合| 日本激情五月天‘| 99色婷婷| 激情婷婷五月社区| 日韩免费乱轮网站| 大香蕉久热| 日本精品人妻无码77777| 激情五月瑟瑟| 六月婷婷色五月| 婷婷色五月婷| 色综合天天综合成人网| 综合色影院| 综合xx网| 丁香五月婷婷激情网| 91男人操女人视频| 国产激情av| 婷婷五月深爱五月| 天天做天天爱天天高潮| 五月五月婷婷| 69午夜成人影片| 丁香五月电影| 久久婷婷五月综合激情国产| 久久开心五月婷婷| 99噜噜噜在线播放| 日本三级日本三级三级人妇四虎| 色香欲综合| 日韩中文字幕| 99在线观看视频免费| 深爱激情丁香| 免费观看高清无码| 欧美成人A片AAA片在线播放| 免费观看欧美成人AA片爱我多深| 九九性视频| 看片视频在线免费日产在线看| 久久人妻熟女一区二区| 婷婷丁香五月天综合网| 26uuu精品一区二区| 丁香九月激情久久| 天天草天天摸| 92久久久| www.色婷婷.com| 羞羞嫩草视频| 丁香五月天啪啪激情综和网 | 精品人妻一区二区三区在| 成人丁香五月| 91啪啪视频| 九月大香蕉| 天天爽天天干天天| 亚洲五月六月婷婷| 开心五月丁香婷婷| 操操操97| 久久五月丁香伊人青草| 99色色网| 日批在线看| 亚洲乱码日产精品BD| 久操操| 九九综合| \\五月天婷婷激情| ..真实国产乱子伦对白在线_欧 | 丁香五月激情无码视频| 激情综合文学| 亚洲日日操| 久久亭亭电影| 五月丁香无码| 天天日天天干天天爽| 婷婷五月激情欧美大胆视频| 婷婷五月天无码熟女| www.99热视频| 97丁香五月天| 婷色五月| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 婷婷久久色五月婷婷久久久| 色五月 激情婷婷 综合五月天| 久久综合九九| 五月天婷婷一起草| 少妇高潮呻吟A片免费看软件| 啪啪啪综合网| 无码色色色| 激情婷婷丁香五月天小说| 色久天| 激情五月丁香五月| 五月天另类小说| av在线免费播放| AAA久久| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 在线观看亚洲视频影院| 伊人久久婷婷| 99热20| 强辱丰满人妻HD中文字幕| 丁香婷婷久久老熟女综合网| 色停停影院五月天| 狠狠干五月天| 99思思热只有在这里看| 91凹凸在线| www.天天干| 99视频网| 人妻久久久久| 九九九九热99超碰| 五月婷色色| 内射丰满人妻| 91热在线| 久久婷婷青青| 色99在线| 久久久久久久久人妻| 玖玖爱资源站| 九月大香蕉| 99色视频在线| 五月激情婷婷丁香| 丁香婷婷六月激情文学| 五月丁香六月婷婷久久| 91五月天| 这里只有精品久久| wwccc久久久| 91色吧网| 婷婷综合干| 久久a热| 99热九九热| 天天综合网、天天综合色| 九九美女视频| 人妻熟女一区二区AV| 香焦网五月天| 色五月丁香伊人| 婷婷六月丁香激情| www.五月婷婷.com| 99热亚洲只有色| 97人人草| 婷婷五月天情色| 丁香五月开心五月激情| 狠狠88综合久久久久噜噜噜| 极品色丁香| 久久R激情| 青草五月天| 色哟哟精品| 久久免费婷婷视频| 亚洲丁香五月深爱五月| 色色日韩网| 五月天成人综合| 一区二区你懂的| 亚洲成av人影院| 伊人婷婷大香蕉| 五月天综合婷婷| 色婷婷AV五月天| 色婷婷五月影视| 日本啪啪网| 成人人操| 97色婷婷在线观看| 久久久九九视频精品18| 婷婷色色网站| 三年高清大片免费观看国语| 日韩在线看AV| 午夜不卡久久精品无码免费| 久操操| 色女人久久| 碰97久久| 97干综合网| 久久 天天| 色色网站在线| 日本3级片一区2区| 丁香五月婷婷大香蕉| 日日杆天天| 日本久久爱| 五月婷婷中文字幕| 丁香五月天激情免费在线观看AV777 | 97se视频在线| 五月天激情久久| 少妇搡BBBB搡BBB搡毛茸茸 | 激情綜合網址| 98色花堂98t.R| 丁香五月婷婷五月天| 韩国天天婷婷| 亚洲第一综合| 91超碰在线观看| 欧美色99| 久久九九色| 丁香五月天啪啪| 婷婷香草网| 密着浓厚中出乚交尾GvG935| 亚洲精品无码A片一区二区| 亚洲黄网在线| 亚洲AV日韩在线观看| 久热精品在看| 色婷婷免费观看| 色九九综合| 99自拍视频在线观看| 99er国产| 五月丁香基地| 激情爱爱网站| 日日夜夜干| 91久久网站| www.com.色色| 玖玖国产视频一区| 久久6这里只有精品| 五月婷婷综合精品| 97人人搞| 欧亚成人A片一区二区| 热久久这里只有精品| 国产原创视频91九色| 婷婷五月天久久综合88| 激情小说五月天社区丁香| 久久色情| 天天天久久人人人合| 色婷婷操逼| 成人做爰A片免费看视频| 综合婷婷| 人妻aV在线| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 人妻久久久久久| 91九九热| 女性自慰系列第五页| 婷婷在线午夜| 丁香六月色婷婷| 亚洲成人在线观看av| 人妻激情视频| 丁香五月婷婷成人综合| 久热综合| 玖玖99婷婷| 91尤物九色在线| 欧美日韩AAAAA| 婷婷色五月开心五月| 色播五月婷婷| 久久婷婷久久| 五月天国产婷婷精品视频在线| 99色免费观看全部| 亲子乱av一区二区三区的| 婷婷五月天AV| 4438激情网| 琪琪布丁香社区激情五月天| 成人av中文字幕| 99re最新地址| 九七色色六月丁香| 精品久色| 99九九在线视频| 丰满少妇猛烈A片免费看观看 | 久久hd| 丁香六月婷婷综合麻豆| 九热免费视频| 色99婷婷五月天| 森林影视大全,最好看的2019年视频 | 亚洲综合婷婷六月丁香五月| 99热这里只有精品3| 国内在线99视频| 五月情综合| 可以看的av| 九热久| 婷婷五月天成人小说| 日韩久久成人| 欧美婷婷六月丁香综合色连续高潮抽搐| 人人视频人人干人人做| 五月婷婷玖玖综合玖玖爱| 激情五月综合色婷婷| 99热网站| 婷婷综合色色| 琪琪色五月天| 丁香五月综合激情啪啪| 婷婷五月色激情欧美激情| 在线不卡AC| 色久婷婷网| 九九在线视频| 日韩一区二区在线播放| 五月激情六月宗合| VA日本视频| 天天综合色| 婷婷成人网五月天| 丁香午夜天| 26uuu国产色| 五月天激情婷婷| jiqingtaose五月天| 婷婷五月天网| xxxx五月激情| 成人在线日韩| se99高清无码| 色色色999| 婷婷色播综合五月| 熟女色色一区二区| 婷婷五月天激情影片| se色婷婷视频| 高清无码视频网址| 精品九九网| 九九热最新| 色欲婷婷五月天| 99操| 狠狠色婷婷7| 五月丁香综合激情| 日本成人小说婷婷六月| 激情婷婷在线| 五月丁香婷婷深深爱| 亚洲综合1024| 思思99热| 天天 青草 丝袜制服 在线| 91无码一起草| 夜夜爱伊人| 日本99视频| 国产亚洲精品久久久久久牛牛| 五月天夜夜爱夜夜操| 9久热在线视频| 天天插天天爽| 爱操人妻| 伊人五月婷| 欧美成人色婷婷| 非洲一级AV| 中文字幕按摩做爰| 五月天激情啪啪| 91综合在线视频| 性爱综合网| 激情五月婷婷综合色播小说| 久久婷婷草| 五月天色色色| 日日操日日爽| 中文字幕人妻在线| 天天干天天爽| 五月综合色| 欧美va精品va老师va| 婷婷中合| 狠狠做深爱婷婷久久综合一区| 综合xx网| 久久九九re热| av九九| 天天插插天天| 色五月天丁香| 日本色色色色色色色色一色二色| 色综合久久88色综合天天看| 久鲁鲁色网| 日韩成人影片在线观看| 五月天婷婷小说| 国产性爱亚洲是图| 五月丁香六月婷婷啪啪综合| 婷婷五月天精品| 丁香五月成人| 婷婷在线播放| 激情五月天之六月婷婷| 99在线视频色版| 丁香五月停停av| 久久视频这里有精品99| 99精品在线观看视频| 国语对白性爱视频播放| 97在线日本| 成人在线观看精品| 狠狠色婷婷777| 五月婷婷之美女图片| 79亚洲精品少妇| 99九九中文字幕视频| 98国产精品综合一区二区三区| 超碰97免费在线| 丁香六月无码播放| 国产激情综合五月| 狠狠色噜噜狠狠| 激情五月婷婷色色| 亚洲精品字幕在线观看| 色综合大香蕉| 五月亭亭网成人在线视频| 激情五月丁香色婷婷| 五月丁香色婷婷色| 色射7856五月天激情四射| 噼里啪啦完整版中文在线观看| 色色色五月婷| 婷婷五月天在线视频网站| 激情www.98com| 99色视| 99色热视频| 亚洲视频久久| 综合久久五| 六月丁丁香| 國語久久婷| 96丁香六月婷婷蜜桃综合久久| 久久草婷婷丁香网站| 99久久99视频只有精品| 9热视频在线观看| 人人操人人看97干| 99色.com| 丁香花五月天婷婷成人社区| 99色综合| 欧美顶级少妇做爰HD| 天天爱天天做天天操| 9久久婷婷国产综合精品性色| 99性爱视频| 青青草成人网| 色综合久久88色综合天天| 激情五月综合网最新 | 操日本人妻视频| 九九热视频网站| 亚洲综合网激情五月天| 日韩草草草草草草草草草草草草| 九九成人精品免费视频| 激情婷婷五月亚洲| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 九月丁香八月婷婷加勒比| 91男人操女人视频| 超碰成人黄色网| 成人无码免费一区二区中文| 99久久婷婷精品视频| 色九九中文字幕| 天天插操| 久re热视频| 久久久久婷 | 伊人久久大香网| 97人人操人人爽| 可以直接看的AV| 韩国真做片在线观看| 免费看欧美成人A片无码| 国产FREESEXVIDEOS性中国| 97在线观看| 啪啪日热| 久久一级片| 久久九九@| 色人久久| 精品视频99看在线视频| 亚洲最大五月天成人网| 久久视频这里有精品99| 激情五月天啪啪| 五月丁香婷婷啪啪| 国产精品91抖高| 五月久久| 精品思思久久| 人人干人人操人人摸人人做| 婷婷激情丁香六月| 97人凄人人操人人爽| 可以免费观看的AV| 五月婷婷六月激情| 色五月婷婷在线| 深爱激情网五月| 99热最新网址| 91爱啪啪| 免费无码毛片一区二区A片| 四川女人毛多水多A片| 久re热视频| 丁香五月网络网络| 日日夜夜狠狠干| 亚洲无码11| 色色操| 婷婷伊人75| 婷婷久久五月| 久久婷婷五月综合伊人| 婷婷五月婷婷| 五月天婷婷色综合| 色综合网址| 色婷婷丁香五月天| 五月色网| 成人国产网| 激情小说五月丁香在线视频观看视频| 激情五月www| 亚洲无码色| 91超级碰人人操| 伍月婷丁香婷| www.婷婷.com| 久久精品一区二区三区四区| 色婷婷色| site:ornaments52.com| 99在线热| 懂色av粉嫩AV蜜臀AV| 天天婷婷综合| 久久99大全| 91人妻九色大屁股| 99色6爱9热| 日日噜噜夜夜狠狠久久丁香六月| 色香蕉精品五夜婷| 噜噜干日本| 五月天婷婷在线播放免费| www.婷婷| www.精品99| 婷婷综合五月天亚洲综合| 亚洲亚洲人成综合网络| 97在线精品视频| 久久人人妻| 丁香五月亚洲综合丝袜| 六月丁香激情综合网| 91成人看片| 五月激情综合婷婷| 国产色色网站网址| 婷婷五月天开心网| 丁香五月婷婷亚洲色图| 丁香六月五月天| XX色综合| 色婷丁香五月| 欧美性丁香色色五月天干干| 亚洲婷婷激情综合激情999精品| 丁香桃色综合网| 91综合在线| 97九色| 99爱爱| 爆乳熟女一区二区三区爆乳| 婷婷五月图片小说网| www.金莲av| 天干干夜夜操| 天天天在线观看| 在线99色| 99爱在线精品视频免费观看| 天堂网亚洲色图| WWW.桔色成人.COM| 强壮公让我夜夜高潮A片视频| VA五月激情在线| 激情亚洲网| 日本a片网址| se99视频| 中文字幕在线日亚州9| 九九久久综合| 97超碰人人操| 另类视频在线| 久久婷婷精品| 五月婷色| 99热日韩这里只有精品| 丁香啪啪| 婷婷深爱五月亚洲综合| 欧美韩国日本| xx色综合| www.91五月| 日日夜夜天天爽| 久久久久久久,99精品视频| 99热这里只有精品50| 欧美情色一区| 激情综合五月婷婷六月丁香| 97人人操人人操人人操人人| 五月婷久久在线| 综久久久| www五月| 色婷视频| 99热免费| 狠狠草婷婷| 色婷婷色丁香色欲av| 色色综合网络| 五月婷婷人人人操| 婷婷五月天AV| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 99性爱| 桃色激情婷婷伊人网| 久久久亚洲精品一区二区三区浴池| 99国产性感视频| 激情碰碰碰| 久久九九综合| 国产日批视频| 婷婷色情 | 五月六月婷| 久热黄色| 五月开心播播网| 天天做天天摸| 日韩超碰在线| 丁香激情五月| 精品一区二区三区木瓜| 亚洲色图81p| 天天干天天干天天干天天干天| 五月天四色房丁香| 六月丁香成人| 婷婷香五月天| 色婷婷丁香香香蕉视频| 91精品人妻少妇无码影院| 天天做天天爱天天爽| 五月丁香六月婷婷手机无线| 五月天丁香成人社| 日本色婷婷| 老司机伊人| 2015好吊操| 丁香五月综合狠狠| 99热91| 99精品爱| 97碰| 婷婷色色网站| 波多野结衣AV无码Porn| 五月丁香人人婷婷在线观看| 五月丁香视频色色| 青青草免费公开视频| 日本狠狠网| 色婷婷色情| 五月丁香久久激情综合| 天天色图| 日日操夜夜骑| 久热这里只有精品性色AV| 玖玖综合玖玖| 欧美性做爰大片免费看办公室| 亚洲国产色色| 99re6热在线精品视频播放速度| 丁香五月天操B| 99久久6| 伊人久久五月天综合| 久久精品国产色| 亚洲午夜一区二区| 综合色色五月| 丁香花五月天激情| 人人爽亚洲| 久久五月网| 亚洲不卡| 欧美乱码国产一级A片| 午夜精品人妻无码一区二区三区| 亚洲精品影视| 五月丁香六月婷婷国产视频| WWW.99热| 免费国产视频| 99ri精品在线观看| 久久A极片| 五月丁香啪啪啪| 91婷色| 婷婷五月天精品| 天天色色婷婷| 丁香五月婷婷久久久| 欧美久久网| 国产免费av在线| 日韩99无码| 一级片操逼视频| 99ri精品| 狠狠综合网| 97久久超碰| 婷婷色五月激情| 神马欧美精| 丁香五月av| 天天婷婷色六月| 另类丁香五月天区图| 久热2025无码| 亚洲乱码日产精品BD| 18av天堂| 色婷婷电影网| 国产九九一区二区三区| 激情五月丁香色色去久久| 超碰2021| 奇米影视在线视频| 91久女| 少妇伦子伦精品无吗| 成人午夜天| 另类少妇人与禽zOZZ0性伦| 99久久网站| 色九九综合| 五月激情影院| 夜夜干夜夜操| 99免费在线视频| 亚洲操人| 青草青草视频2免费观看| 97人人干人人操| w婷婷五月婷婷w| 99精品在这里| 五月激情偷拍| 久热超碰| 午夜天堂一区人妻| 色婷婷综合久久| 久操乱| 五月婷免费视频| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 五月亭亭狠狠| 99热精品无码| 站长推荐无码播放| 99久久久久久www| 99精品在线播放| 久久五月天婷婷| 日本视频久久| 伊人喵咪a V| 久久在线92| 久99在线视频| 天天五月丁香五月| 婷婷丁香69精华| 婷婷五月天日日日干干干| 丁香五月天BBw| 激情综合五月婷婷丁香| 五月丁香六月成人| 99啪啪| 色综合色香蕉网| www.色九月| 99自拍视频在线观看| 色婷丨日丨天丨综合久久| 国产精品色一哟哟| 日本高清久| 久久五月天婷婷| 97干在线视频精品店| 97在线干| 日韩欧美一区二区三区四区| 伊人日日干| 欧美性爱中文字幕| 色色婷| 香蕉久日夜| 超色欲天天| 久久在这里有精品| 婷婷免费无视频| 五月天天视频| 欧洲色| 欧美婷婷综合网| 色啪网| 九九热视频精品| 99碰碰| 99热官网精品在线| 色婷婷综合久久久久| 五月婷婷激情中心| 2017人人操| 91男人操女人视频| 五月丁香久久综合色| 成人婷婷色五月天| 深爱激清网| 99只有精品| 免费AV在线网址| 久久五月丁香激情综合| 丁香婷婷深情五月亚洲| 久热99| 亚洲激情五月| 俺也去综合| 婷婷五月香蕉| 在线sebiav精品视频| 九九九九国产| 偷拍五月丁香| 五月香婷婷| 91精品久久久久久久| 日本不卡五月婷婷丁香| 丁香五月综合| 免费人人操| 五月天激情图| 狠狠综合网| 美女伊人久久| 激情婷婷内射| 色综合丁香| 亚洲AV成人在线观看| 国在线激情网| 猫咪伊人久久| www,setingting| 激情五月亚洲综合网| 四虎成人精品永久免费AV九九| 超级碰碰碰久久网站视频| 婷五月丁香俺| 啪啪一区| 婷婷色偷拍| 毛片毛片毛片毛片| 极品人妻VIDEOSSS人妻| 97中文在线| 婷婷五月天激情开心网| 就去色色五月丁香婷婷久久久| 天天综合插插| 六月丁香五月天| 99热都是精品| 久久激情五月| 六月丁香成人| 五月婷久久在线| 激情综合网激情五月丁香五月俺也去| 九九精品视频免费在线| 欧美六月| 婷婷六月综合基地| 五月丁香六月婷婷的女人| 99视频只有精品| 天天爽人人综合免费7799| 深爱婷婷色| 久热这里只有精品6| 久久五月激情综合| 婷婷亚洲综合| 91热久| 五月婷婷第四色| 国产精品 的国产| WWW.夜夜| 丁香婷婷成年| 色综合色综合婷婷热| 色婷婷电影网| 丁香六月婷婷开心| 成人做爰A片免费看视频|