[VB.NET] 円記号(¥)を含む文字列に関する注意

2014年8月27日

 以下のコードを実行すると True が表示されます。

Module Module1

    Sub Main()
        Dim isExist = IO.File.Exists("C:WindowsSystem32driversetchosts")

        Console.WriteLine("{0}", isExist)
    End Sub

End Module

 結果

True
続行するには何かキーを押してください . . .

 以下のコードを実行すると False が表示されます。

Module Module1

    Sub Main()
        Dim isExist = IO.File.Exists("C:¥Windows¥System32¥drivers¥etc¥hosts")

        Console.WriteLine("{0}", isExist)
    End Sub

End Module

 結果

False
続行するには何かキーを押してください . . .

 見た目は同じコードのように見えますが結果が異なります。
 これは ¥ 記号が 前者のコードでは U+005C であるのに対し、後者のコードでは U+00A5 であるためです。フォルダのセパレーターは U+005C である必要があります。

 多くの場合、普通に入力していると、上側の正常なコードが書けますが、以下の手順を踏むと ¥ 記号の文字コードが U+005C から U+00A5 に変更されてしまう場合があります。以下その手順。

  1. Word で Path 文字列 (例: C:WindowsSystem32driversetchosts) を入力する。
  2. その文書を PDF で保存する。
  3. 作成した PDF から Path 文字列 (例: C:¥Windows¥System32¥drivers¥etc¥hosts) をコピーする。
  4. ソースコードにペーストする。

 なので、PDF ファイルから Path 文字列をコピーペーストする場合、¥ 記号が U+005C であるか U+00A5 であるかを確認しましょう。
 確認方法としては、当該 Path 文字列を Word 等にコピーし、フォントを Arial Unicode MS に変更すると、U+005C は で表示されるためお手軽です。






カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org