Mac ブラウザでダウンロードしたファイル名が常に「文字化け」する

それが達成できたら、「いいね!」とシェアを忘れずに、ありがとうございます~

この記事で紹介する方法は、ファイル名が文字化けした場合にファイル名を正しい中国語名に戻す方法であり、文字化けの発生を完全に回避するものではありません。これは、ダウンロードしたファイルの名前が文字化けすることが原因であり、多くの場合、システム、ブラウザ、Web サイトの 3 つの要因が複合的に影響して発生します。文字化けの発生を回避するには、特定の状況に基づいて、特定の Web サイト用に個人のシステムまたはブラウザを調整および構成する必要があります。

PS: あなたが開発者であれば、ダウンロードされたファイル名とコンテンツの文字化けの問題をバックグラウンド スタッフに処理させることができます。

私はMACを使用しているため、MACシステムについてのみ説明します。

macOS システム

macOS システムには、Automator や AppleScript などの強力な自動化サポートが付属しています。ここでは、Automator を使用して、次の方法でファイル サービスを作成しました。

1. 処理する必要があるファイルを右クリックし、「サービスの作成」と入力します。

以下に示すように:
ここに画像の説明を挿入します

2. このサービスはネットワークを必要とせず、複数のファイルまたはフォルダーのバッチ処理をサポートします。操作は「シェルスクリプトを実行する」のみで、シェルコードは以下の通りです。

追記: まずここからダウンロードしてください。Python は 2 つのバージョンに分かれており、必要に応じて選択してください
Pythonのバージョン

# 调用 Python 内置模块进行解码
alias urldecode='python -c "import sys, urllib as ul; print ul.unquote_plus(sys.argv[1])"'

# 遍历选择的文件列表,进行重命名
for f in "$@"
do
    newName=$(urldecode "$f")
    mv "$f" "$newName"
done

Python 3.0以降のバージョン

import sys
import urllib.parse
import os
import shutil

def urldecode(url):
    return urllib.parse.unquote_plus(url)

for f in sys.argv[1:]:
    newName = urldecode(f)
    shutil.move(f, newName)

上記の対応するスクリプトをコピーして、下の画像に貼り付けます。

ここに画像の説明を挿入します

3. 最後に、サービスに UrlDecode という名前を付けて保存します。

図に示すように、もう一度右クリックして、解析する必要があるファイルを開きます。
作成したサービスを見つけます。見つからない場合は、コンピュータを再起動してください。

ここに画像の説明を挿入します

ここに画像の説明を挿入します
これで、ファイル名の文字化けはほとんど解決しました。はははは、お気に入りに追加したいと思います。

2. è‡ã タイプが文字化けする

それ以外の場合、macOS 10.13.4 中国語システムの Safari および Chrome ブラウザでダウンロードされたファイル名は正常です。英語システムでは、両方のブラウザでダウンロードされたファイル名が文字化けします。

1. 上記の手順に従って、å という名前の新しいサービスを作成し、文字化けしたファイル名を修正します。

Python には 2 つのバージョンがあります
Python:

for f in "$@"
do
    fileName=$(basename ${
    
    f})
    filePath=$(dirname ${
    
    f})

    # 两种乱码类型 GBKUTF-8
    {
    
     fileNewName=$(echo $fileName | iconv -f UTF-8-Mac -t latin1 | iconv -f gbk)
    } || {
    
     fileNewName=$(echo $fileName | iconv -f UTF-8-Mac -t latin1)
    }

    # 文件名正常或乱码类型不属上述两种时,新文件名为空,则跳过
    if [ -n "$fileNewName" ]; then
        # 避免文件重复:如果已存在修复后的文件名,则在新文件名后加上随机字符串。
        if [ -e ${
    
    filePath}/$fileNewName ]; then
            mv "$f" "${filePath}/${fileNewName}-${RANDOM}"
        else
            mv "$f" "${filePath}/${fileNewName}"
        fi
    fi
done

Python 3.0以降のバージョン

import os
import shutil
import random
import sys

for f in sys.argv[1:]:
    fileName = os.path.basename(f)
    filePath = os.path.dirname(f)

    # 两种乱码类型 GBKUTF-8
    fileNewName = fileName.encode('latin1').decode('gbk') if fileName.encode('utf-8').decode('utf-8', 'ignore') != fileName else fileName.encode('utf-8').decode('utf-8', 'ignore')

    # 文件名正常或乱码类型不属于上述两种时,新文件名为空,则跳过
    if fileNewName:
        # 避免文件重复:如果已存在修复后的文件名,则在新文件名后加上随机字符串。
        if os.path.exists(os.path.join(filePath, fileNewName)):
            newFileName = f"{fileNewName}-{random.randint(0, 99999)}"
        else:
            newFileName = fileNewName

        shutil.move(f, os.path.join(filePath, newFileName))
2. ファイル サービスを忘れずに保存するだけで完了です。

ここに画像の説明を挿入します

3. 結論

上記のコードは2種類の文字化けを解決するコードであることがわかりますが、このうちよく遭遇するのはGBK文字化けで、UTF-8系は比較的珍しいので便宜的に追加しました。
文字化けが発生するといつもイライラします。この記事で紹介した方法が、あなたが直面している問題の解決に役立つことを願っています。

中断する!いいねやお気に入りをありがとうございます~

おすすめ

転載: blog.csdn.net/Gas_station/article/details/134683838