WindowsおよびLinuxのディレクトリ名では、どの文字が禁止されていますか?


356

/はLinuxでは違法であり、以下はWindowsでは違法であることを知っています(私はそう思います) * . " / \ [ ] : ; | ,

他に何が欠けていますか?

ただし、包括的なガイドと、2バイト文字を考慮したガイドが必要です。外部リソースへのリンクは私には問題ありません。

最初に、禁止文字を含む可能性のある名前を使用して、ファイルシステムにディレクトリを作成する必要があるため、これらの文字をアンダースコアに置き換えます。次に、このディレクトリとその内容を(Javaを使用して)zipファイルに書き込む必要があるので、zipディレクトリの名前に関する追加のアドバイスをいただければ幸いです。


13
あなたが言及した文字のいくつかは、実際にはWindowsで許可されています。これを確認してください:echo abc > "ab.;,=[1]"
ドルメン、

3
また、<および>はWindowsでは違法であることも忘れないでください。
AnotherParker 2016年

4
/はLinuxでは違法ではありません。。あなただけ\でそれを入力するときに、それをエスケープする必要がある
デビッドC.ビショップ

5
@ DavidC.Bishop:このSOの投稿は、Linuxカーネルがスラッシュを含むファイル名での作業を妨げると断言しています。それを機能させることができましたか?
Soren Bjornstad

14
「/はLinuxでは違法ではありません。入力時に\でエスケープする必要があるだけです」-このステートメントは完全に間違っています。ファイル名コンポーネントに/を含めることはできません。また、エスケープしても効果はありません。
ジムBalter

回答:


215

禁止されたファイル名の文字の「包括的なガイド」は、ファイル名だけでなく文字も予約しているため、Windowsでは機能しません。はい、などの文字 * " ?は禁止されていますが、禁止されている有効な文字のみで構成される名前は無限にあります。たとえば、スペースとドットは有効なファイル名文字ですが、それらの文字のみで構成される名前は禁止されています。

Windowsでは大文字と小文字が区別されないため、名前の付いたフォルダが既に存在するA場合は、そのフォルダを作成できませんa。さらに悪いことに、のような一見許可名PRNCON、他の多くは、予約と許可されていません。Windowsにはいくつかの長さ制限もあります。あるフォルダで有効なファイル名を別のフォルダに移動すると無効になる場合があります。ファイルとフォルダの命名規則は 、Microsoftのドキュメントに記載されています。

一般に、ユーザー生成テキストを使用してWindowsディレクトリ名を作成することはできません。ユーザーが好きな名前を付けることを許可する場合AAB、などの安全な名前を作成しA2、ユーザーが生成した名前とそれに対応するパスをアプリケーションデータファイルに保存し、アプリケーションでパスマッピングを実行する必要があります。

ユーザー生成のフォルダー名を絶対に許可する必要がある場合、それらが無効かどうかを確認する唯一の方法は、例外をキャッチして名前が無効であると想定することです。アクセスが拒否された場合にスローされる例外、オフラインドライブ、およびドライブの空き容量が、無効な名前に対してスローされる可能性のある例外と重複するため、これは危険に満ちています。あなたは怪我の巨大な缶を開けています。


11
MSDNリンクの重要なフレーズは、「[およびターゲットファイルシステムで許可されていないその他の文字」です。Windowsには異なるファイルシステムがある場合があります。Unicodeを許可するものもあれば、許可しないものもあります。一般に、名前を検証する唯一の安全な方法は、ターゲットデバイスでそれを試すことです。
Adrian McCarthy

72
いくつかのガイドラインがあり、「禁止されている有効な文字のみで構成される名前の数は無限にある」とは、建設的ではありません。同様に、「Windowsは大文字と小文字を区別しない」というのはばかげた例外です。OPはセマンティクスではなく構文について尋ねており、そのようなファイル名が存在する可能性A.txtあるために無効であると言う人はいないでしょうa.TXT
ボロディン2016年

9
COPY CON PRNキーボード入力または可能なstdinから読み取り、それをプリンターにコピーすることを意味します。最近のウィンドウではまだ有効かどうかはわかりませんが、確かに長い間有効でした。昔はそれを使ってテキストを入力し、ドットマトリックスプリンターに出力するだけでした。
AntonPiatek 2016

6
「建設的ではない」-それどころか、それは事実です。建設的でないのはボロディンの交戦です。
ジムバルター2017

3
「通常、ユーザーが生成したテキストを使用してWindowsディレクトリ名を作成することはできません。」<-これを実行したい場合は、文字のホワイトリストを作成するだけで十分です。既存の問題を無視できる場合は、ほとんど機能します。
ケーシー

533

まずはシンプルにして、質問に答えましょう。

  1. 禁止されている印刷可能なASCII文字は次のとおりです。

    • Linux / Unix:

      / (forward slash)
      
    • ウィンドウズ:

      < (less than)
      > (greater than)
      : (colon - sometimes works, but is actually NTFS Alternate Data Streams)
      " (double quote)
      / (forward slash)
      \ (backslash)
      | (vertical bar or pipe)
      ? (question mark)
      * (asterisk)
      
  2. 印刷できない文字

    データが、印刷不可能な文字を許可するソースからのものである場合は、さらにチェックする必要があります。

    • Linux / Unix:

      0 (NULL byte)
      
    • ウィンドウズ:

      0-31 (ASCII control characters)
      

    注: Linux / Unixファイルシステムでは、ファイル名に制御文字を含むファイルを作成することは合法ですが、ユーザーがそのようなファイルを処理するのは悪夢かもしれません

  3. 予約ファイル名

    次のファイル名は予約されています。

    • ウィンドウズ:

      CON, PRN, AUX, NUL 
      COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
      LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9
      

      (どちらも単独で、任意のファイル拡張子が付いていますLPT1.txt)。

  4. その他のルール

    • ウィンドウズ:

      ファイル名はスペースまたはドットで終了できません。


5
ほとんどのWindowsファイルシステムは、8ビット文字に制限されていません。Windowsで禁止されている他の多くの8ビット文字(NUL、制御文字)があります。それらを考慮しても、質問者が禁止されていない文字で構成される無効なディレクトリ名は無数にあるため、質問者が「ファイルシステムにディレクトリを作成する」ことはできません。
Dour High Arch、2015

38
他の人たちはすでにそれを言っており、それは建設的ではありません。私が答えを探してここに来たとき、私は他の場所に集めなければならないリストが欲しかった:有効なファイル名で良い試みを作成するとき、ユーザー入力からどの文字をフィルターで除外するか。キャラクターが一緒に無効になるかどうかの質問も、いくらか複雑になる可能性があります。
Christopher Oezbek

5
LinuxではNULL文字も禁止されています。
Dan Jones

3
Linuxでは改行が禁止されていません。とはいえ、NULがLinuxで禁止されている場合、Windowsでも禁止されていれば、同じ目的を果たします。
アルカロ

11
@Soaku:もちろん、世界はマイクロソフトを中心に回っていないからです。絶対に禁止する必要がある文字が2つしかないのに、なぜ不要な制限を追加するのですか?
firegurafiku 2017

67

Linuxおよびその他のUnix関連システムでは、ファイルまたはディレクトリの名前に使用できない文字は2つだけで、それらはNUL '\0'とスラッシュ'/'です。もちろん、スラッシュは、ディレクトリコンポーネントを区切るパス名に使用できます。

1はそれを持っているスティーブン・ボーン(除く254個のファイル、ファイル名に表示できるすべての単一の文字(文字コード)のための1つを含むディレクトリを持っていた(「シェル」の名声の)/'\0';名前は.もちろん、カレントディレクトリました)。これは、Bourneシェルのテストに使用され、バックアッププログラムなどの不注意なプログラムを日常的に破壊しました。

他の人々はWindowsのルールをカバーしています。

MacOS Xには、大文字と小文字を区別しないファイルシステムがあることに注意してください。


1第6章、テスト、§6.5ストレステストで同様に述べたのは、プログラミングの実践におけるカーニハン&パイクでした。

Steve BourneがUnixシェル(Bourneシェルと呼ばれるようになった)を書いているとき、彼は1文字の名前を持つ254個のファイルのディレクトリを作成し'\0'ました。ファイル名。彼は、パターンマッチングとトークン化のあらゆる種類のテストにそのディレクトリを使用しました。(もちろん、テストディレクトリはプログラムによって作成されました。)その後何年もの間、そのディレクトリはファイルツリーウォーキングプログラムの悩みの種でした。それは破壊にそれらをテストしました。

ディレクトリにはエントリ.とが含まれている必要があることに注意してください。..これは、254ファイルではなく、間違いなく253ファイル(および2ディレクトリ)、または255名前エントリでした。これは、逸話の効果や、それが説明する慎重なテストには影響しません。


1
254ファイル?そして、utf8はどうですか?
j_kubik 2012

20
254個のファイルはすべて、ファイル名で許可されている文字ごとに1つずつ、1文字のファイル名でした。Steve BourneがBourneシェルを書いたとき、UTF-8は目を見張るものすらありませんでした。UTF-8は、バイトの有効なシーケンスに関する規則を課します(バイト0xC0、0xC1、0xF5-0xFFを完全に禁止します)。それ以外の点では、それほど大きな違いはありません。私が説明している詳細レベルでです。
ジョナサンレフラー

1
MacOS HFS +ファイルシステムのディスク上のディレクトリ区切り文字は、実際には「/」ではなく「:」です。* nix APIを使用している場合、OSは通常(おそらく常に)正しく動作します。ただし、OSXの世界に移動している場合(たとえば、applescriptを使用している場合)に、これが確実に起こるとは期待しないでください。Cocoa APIは/を使用し、:を非表示にしているようですが、古いCarbon APIは使用していないと思います。
Dan Pritts 2013

@DanPritts Xcodeの設定でカスタムフォント/カラースキームを作成/し、名前にa を付けました。それは中のスキームを使用して新しいディレクトリを作成したとして、それは、いくつかの問題を引き起こした。
アンドレアス・

ディレクトリの名前にPATHコロンが含まれている場合、コロンが区切り文字として使用されるため(Windowsではセミコロン)、ディレクトリをUnix 変数に追加できないことに注意してください。だから、このようAディレクトリにあるプログラムは、どちらかそれはある指定(相対または絶対することができる)、またはディレクトリ内にあり、ドット持っている必要があります(そのパス名で実行する必要があり.、現在のディレクトリ)にあるPATHとして広くみなされています、安全ではない。
ジョナサンレフラー

36

文字のブラックリストを作成する代わりに、ホワイトリストを使用できます。すべてのことを考慮すると、ファイルまたはディレクトリ名のコンテキストで意味のある文字の範囲は非常に短く、ASCIIテーブル全体を使用できない場合、非常に特定の命名要件がない限り、ユーザーはアプリケーションに対してそれを保持しません。

ターゲットファイルシステムの予約名の問題は解決しませんが、ホワイトリストを使用すると、ソースでのリスクを軽減するのが容易になります。

その精神で、これは安全と見なすことができる一連のキャラクターです:

  • 文字(az AZ)-必要に応じてUnicode文字
  • 数字(0-9)
  • 下線(_)
  • ハイフン(-)
  • スペース
  • ドット(。)

そして、あなたが許可したい追加の安全なキャラクター。これ以外に、スペースとドットに関する追加のルールを適用する必要があります。これで通常は十分です:

  • 名前には少なくとも1つの文字または数字を含める必要があります(ドット/スペースのみを避けるため)
  • 名前は文字または数字で始める必要があります(先頭のドット/スペースを避けるため)
  • 名前はドットまたはスペースで終わらない可能性があります(エクスプローラーのように、存在する場合は単にそれらをトリムします)

これはすでに、非常に複雑で無意味な名前を許可します。たとえば、これらの名前はこれらのルールで可能であり、Windows / Linuxでは有効なファイル名です。

  • A...........ext
  • B -.- .ext

基本的に、ホワイトリストに登録されている文字が非常に少ない場合でも、実際に意味のあるものを決定し、それに応じて名前を検証/調整する必要があります。私のアプリケーションの1つで、上記と同じルールを使用しましたが、重複するドットとスペースを削除しました。


15
そして、これにだまされてしまう、英語を話さない私のユーザーはどうですか?
16年

2
@pkh:私の投稿で述べたように、ホワイトリストに必要なUnicode文字を含めます。特に正規表現を使用する場合などは、通常、文字の範囲を簡単に指定できます。
AeonOfTime 2016年

2
ホワイトリストアプローチを使用しますが、Windowsでは、デバイス名(prn、lpt1、con)やなど、大文字と小文字が区別されない予約済みの文字列を管理する必要があることを忘れないでください。そして..
tahoar

2
Windowsの制限を逃しました:ドットまたはスペースで終わってはいけません。
Martin Bonnerがモニカの

1
「すべてを考慮すると、ファイルまたはディレクトリ名のコンテキストで意味のある文字の範囲は非常に短いです。」たぶんいくつかのユースケースのために。私は現在20言語のメディアファイルを含むプロジェクトに取り組んでおり、エンドユーザーはその方法でコンテンツを見つけるため、ファイル名にはメディアアイテムのタイトルを反映させる必要があります。名前の多くは句読点を使用しています。ファイル名の文字に対する制限には価格が伴うため、この場合は制限を最小限に抑える必要があります。この使用例では、ファイル名で意味のない文字の範囲は、ファイル名で意味のある文字の範囲よりもはるかに短くて単純です。
LarsH

29

Windowsに答えを知らせる簡単な方法は、エクスプローラーでファイルの名前を変更して、新しい名前として/を入力することです。Windowsは、不正な文字のリストを通知するメッセージボックスをポップアップします。

A filename cannot contain any of the following characters:
    \ / : * ? " < > | 

https://support.microsoft.com/en-us/kb/177506


28

まあ、もし研究目的のためだけなら、あなたの最善の策はFilenamesに関するこのWikipediaのエントリを調べることです。

ユーザー入力を検証し、それに基づいてファイル名を作成するポータブル関数を記述したい場合、簡単な答えはnotです。PerlのFile :: Specなどの移植可能なモジュールを見て、そのような「単純な」タスクを実行するために必要なすべてのホップを垣間見ることができます。


5

Windowsの場合、PowerShellを使用して確認できます

$PathInvalidChars = [System.IO.Path]::GetInvalidPathChars() #36 chars

変換できるUTF-8コードを表示するには

$enc = [system.Text.Encoding]::UTF8
$PathInvalidChars | foreach { $enc.GetBytes($_) }

$FileNameInvalidChars = [System.IO.Path]::GetInvalidFileNameChars() #41 chars

$FileOnlyInvalidChars = @(':', '*', '?', '\', '/') #5 chars - as a difference

PowershelIを話さない人にとって、$ FileNameInvalidCharsは0x00から0x1Fであり、: "<> | *?\ /
Robin Davies

4

Windows 10(2019)では、次の文字を入力しようとすると、エラーにより禁止されます。

ファイル名に次の文字を含めることはできません:

\ / : * ? " < > |


3

Christopher Oezbekの回答に基づくWindowsのac#実装は次のとおりです

それはcontainsFolderブールによってより複雑になりましたが、うまくいけばすべてをカバーします

/// <summary>
/// This will replace invalid chars with underscores, there are also some reserved words that it adds underscore to
/// </summary>
/// <remarks>
/// /programming/1976007/what-characters-are-forbidden-in-windows-and-linux-directory-names
/// </remarks>
/// <param name="containsFolder">Pass in true if filename represents a folder\file (passing true will allow slash)</param>
public static string EscapeFilename_Windows(string filename, bool containsFolder = false)
{
    StringBuilder builder = new StringBuilder(filename.Length + 12);

    int index = 0;

    // Allow colon if it's part of the drive letter
    if (containsFolder)
    {
        Match match = Regex.Match(filename, @"^\s*[A-Z]:\\", RegexOptions.IgnoreCase);
        if (match.Success)
        {
            builder.Append(match.Value);
            index = match.Length;
        }
    }

    // Character substitutions
    for (int cntr = index; cntr < filename.Length; cntr++)
    {
        char c = filename[cntr];

        switch (c)
        {
            case '\u0000':
            case '\u0001':
            case '\u0002':
            case '\u0003':
            case '\u0004':
            case '\u0005':
            case '\u0006':
            case '\u0007':
            case '\u0008':
            case '\u0009':
            case '\u000A':
            case '\u000B':
            case '\u000C':
            case '\u000D':
            case '\u000E':
            case '\u000F':
            case '\u0010':
            case '\u0011':
            case '\u0012':
            case '\u0013':
            case '\u0014':
            case '\u0015':
            case '\u0016':
            case '\u0017':
            case '\u0018':
            case '\u0019':
            case '\u001A':
            case '\u001B':
            case '\u001C':
            case '\u001D':
            case '\u001E':
            case '\u001F':

            case '<':
            case '>':
            case ':':
            case '"':
            case '/':
            case '|':
            case '?':
            case '*':
                builder.Append('_');
                break;

            case '\\':
                builder.Append(containsFolder ? c : '_');
                break;

            default:
                builder.Append(c);
                break;
        }
    }

    string built = builder.ToString();

    if (built == "")
    {
        return "_";
    }

    if (built.EndsWith(" ") || built.EndsWith("."))
    {
        built = built.Substring(0, built.Length - 1) + "_";
    }

    // These are reserved names, in either the folder or file name, but they are fine if following a dot
    // CON, PRN, AUX, NUL, COM0 .. COM9, LPT0 .. LPT9
    builder = new StringBuilder(built.Length + 12);
    index = 0;
    foreach (Match match in Regex.Matches(built, @"(^|\\)\s*(?<bad>CON|PRN|AUX|NUL|COM\d|LPT\d)\s*(\.|\\|$)", RegexOptions.IgnoreCase))
    {
        Group group = match.Groups["bad"];
        if (group.Index > index)
        {
            builder.Append(built.Substring(index, match.Index - index + 1));
        }

        builder.Append(group.Value);
        builder.Append("_");        // putting an underscore after this keyword is enough to make it acceptable

        index = group.Index + group.Length;
    }

    if (index == 0)
    {
        return built;
    }

    if (index < built.Length - 1)
    {
        builder.Append(built.Substring(index));
    }

    return builder.ToString();
}

3つの質問があります。1.なぜStringBuilder初期容量値で初期化したのですか?2.なぜ長さに12を加えたのfilenameですか?3. 12が任意に選択されたか、この数の背後にいくつかの考えがありましたか?
iiminov

2

2017年4月18日の時点で、このトピックへの回答の中に文字とファイル名の単純なブラックリストまたはホワイトリストはありません。多くの返信があります。

私が思いつくことができた最良の提案は、ユーザーが好きなようにファイルに名前を付けることでした。アプリケーションがファイルを保存しようとするときにエラーハンドラーを使用し、例外をキャッチし、ファイル名が原因であると想定して(当然、保存パスにも問題がないことを確認した後)、ユーザーに新しいファイル名の入力を求めます。最良の結果を得るには、このチェック手順をループ内に配置します。ループは、ユーザーが正しくなるか、あきらめるまで続きます。(少なくともVBAでは)私にとって最も効果的でした。


1
あなたの答え@FCastroは技術的な観点から正しいです。ただし、UXの観点から見ると、これは悪夢です。ユーザーは、「何かを入力して、成功したら教えてあげる」ゲームを何度もプレイすることを強いられます。後で変換される不正な文字を入力したことをユーザーに知らせるメッセージ(警告スタイル)が表示されます。
マイク

クリストファーOezbekは、2015年には、このようなブラックリストを提供
ジム・Balter

1

唯一の不正なUnix文字は/and NULLである可能性がありますが、コマンドラインの解釈に関する考慮事項を含める必要があります。

たとえば、ファイル1>&2または2>&1Unix に名前を付けることは合法かもしれませんが、このようなファイル名は、コマンドラインで使用すると誤って解釈される場合があります。

同様に、ファイルに名前を付けることもできます$PATHが、コマンドラインからファイルにアクセスしようとすると、シェルは$PATH変数値に変換されます。


BASHでのリテラルのために、最善の方法は、私は、補間があるなしリテラルを宣言するために見つけた$'myvalueis'、EX: $ echo 'hi' > $'2>&1'cat 2\>\&1「こんにちは」
ThorSummoner

1

定義することの難しさ、合法すでに対処されていないか、ホワイトリストが提案されました。ただし、Windows は8ビットを超える文字をサポートしていますウィキペディアは、(たとえば)

修飾文字のコロン [(以下の7.を参照)は、ファイル名に使用されるSegoe UIフォントのコロンと同じであるため、Windowsファイル名で使用されることがあります。[継承されたASCII]コロン自体は許可されていません。

したがって、「違法な」文字を置き換えるためにUnicode文字を使用するはるかにリベラルなアプローチを提示したいと思います。結果は、はるかに読みやすい比較可能なユースケースで見つかりました。このブロックの例を見てください。さらに、そこから元のコンテンツを復元することもできます。次のリストに、可能な選択と調査を示します。

  1. 代わりに*U+002A * ASTERISK)は、使用することができます多くの1例えば、記載されているのU+2217 ∗ (ASTERISK OPERATOR)か、Full Width Asterisk U+FF0A *
  2. の代わりに.、たとえば次のいずれかを使用できます。⋅ U+22C5 dot operator
  3. の代わりに"、あなたは使うことができます“ U+201C english leftdoublequotemark(代替案はここを参照してください
  4. // SOLIDUS U+002F)の代わりに使用できます∕ DIVISION SLASH U+2215(その他はこちら
  5. 代わりに\\ U+005C Reverse solidus)は、使用することができます⧵ U+29F5 Reverse solidus operatorもっと
  6. [U+005B Left square bracket)と]U+005D Right square bracket)の代わりに、例えばU+FF3B[ FULLWIDTH LEFT SQUARE BRACKETandを使用できますU+FF3D ]FULLWIDTH RIGHT SQUARE BRACKETここから、ここでより多くの可能性があります
  7. の代わりに:U+2236 ∶ RATIO (for mathematical usage)またはを使用できますU+A789 ꞉ MODIFIER LETTER COLONコロン(文字)を参照してください。ファイル名に使用されるSegoe UIフォントのコロンと同じであるため、Windowsファイル名で使用されることがあります。コロン自体は許可されていません)(ここを参照)
  8. の代わりに;、あなたは使うことができますU+037E ; GREEK QUESTION MARKここを見てください
  9. 以下の場合|:、のようないくつかの良い代替品があるU+0964 । DEVANAGARI DANDAU+2223 ∣ DIVIDESまたはU+01C0 ǀ LATIN LETTER DENTAL CLICKウィキペディア)。また、ボックス描画文字には、他のさまざまなオプションが含まれています。
  10. ,, U+002C COMMA)の代わりに、例を使用できます‚ U+201A SINGLE LOW-9 QUOTATION MARKここを参照)
  11. 以下のために?U+003F ? QUESTION MARK:)、これらは良好な候補であるU+FF1F ? FULLWIDTH QUESTION MARKU+FE56 ﹖ SMALL QUESTION MARK(から彼は再び 2以上から、ばかだブロック、「質問」を検索)

0

Windowsでインターネットショートカットを作成する場合、ファイル名を作成するために、スラッシュ(マイナスに変換される)を除き、不正な文字はスキップされます。


3
「回答ではありません...拒否されました-モデレーターはあなたのフラグをレビューしましたが、それを裏付ける証拠は見つかりませんでした」あなたは私をからかっている必要があります。より良いモデレーターをお願いします。
ジムBalter

-1

Unixシェルでは、ほぼすべての文字を一重引用符で囲むことができます'。単一引用符自体を除いて、\拡張されていないため、制御文字を表現できません。引用符で囲まれた文字列内から一重引用符自体'I'"'"'m'にアクセスできます。これは、文字列を一重引用符と二重引用符で連結できます。"I'm"(ここでは二重引用符も使用できます)。

したがって、すべての制御文字はシェルに入力するのが難しいので、使用しないでください。残りの部分、特にダッシュで始まるファイルはまだ面白いです。ほとんどのコマンドは--、前に2つのダッシュがないか./、で指定しない限り、それらをオプションとして読み取るためです-

素敵になりたい場合は、シェルや一般的なコマンドが構文要素として使用する文字を使用しないでください。位置に依存することがあります。たとえば-、最初の文字としてではなく、を使用できます。と同様に.、それが意味する場合にのみ最初の文字として使用できます(「隠しファイル」)。つまり、ファイル名はVT100エスケープシーケンス;-)なので、lsは出力を文字化けします。


問題はシェルについてではありません。
ジムバルター2017

-8

私は同じ必要性があり、推奨事項または標準的な参照を探していて、このスレッドに出くわしました。ファイル名とディレクトリ名で避けるべき現在のブラックリストは次のとおりです。

$CharactersInvalidForFileName = {
    "pound" -> "#",
    "left angle bracket" -> "<",
    "dollar sign" -> "$",
    "plus sign" -> "+",
    "percent" -> "%",
    "right angle bracket" -> ">",
    "exclamation point" -> "!",
    "backtick" -> "`",
    "ampersand" -> "&",
    "asterisk" -> "*",
    "single quotes" -> "“",
    "pipe" -> "|",
    "left bracket" -> "{",
    "question mark" -> "?",
    "double quotes" -> "”",
    "equal sign" -> "=",
    "right bracket" -> "}",
    "forward slash" -> "/",
    "colon" -> ":",
    "back slash" -> "\\",
    "lank spaces" -> "b",
    "at sign" -> "@"
};

4
@リストにあることについてコメントしていただけませんか?
PypeBros 2016年

8
問題はどのキャラクターが違法かということでした。リストのほとんどの文字は合法です。
Nigel Alderton 2017年

6
手紙b?笑、私はそれがbからlank spacesだと思います...まだいくつか残っています...私は写真の名前(),-.;[]^_~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ.jpgを変更しましたが、怒っているようだったので、元に戻す必要がありまし ...
ashleedawg
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.