2020年6月5日金曜日

◆URLエンコード

現場もだいぶ離れていたのと、もともとWEB系は苦手なので会社のWEBページをメンテナンスしろとか言われて右往左往している。

判りやすさ優先でHTMLのファイル名に日本語を付けたところ、ローカル環境では問題なかったがサーバー(Linux)に持っていったらリンク文字が化けているようでアクセスできない。

日本語以外のファイル名を付けるには修正量が多すぎるので思案していたところ、
URLエンコードすれば良いのに気が付いた。

いつもよく見ているのだが、まったく意識していないのでなかなか気づけなかった。

変換の仕方は至極簡単で、

Add-Type -AssemblyName System.Web しておいてから、

[System.Web.HttpUtility]::UrlEncode(“ほげほげ”)

そういえばPowerShellの勉強を始めたころ使ったなぁ・・・。

-----

ローカルでうまくいったので安心していたらサーバーにUPしたらエラーになる。

リンクをクリックすると

Not Found

The requested URL /kensaku/html/巨人.html was not found on this server.

てな感じに表示される。

明らかに日本語ファイル名部分が文字化けしているのでエンコードがうまく理解されないのかと調べたが全く分からず。

だいぶ、悩んだ結果、
リンクが「hogehoge.html」
実際のフィルが「hogehoge.HTML」となっているのが原因のようで小文字に統一したところ解決した。

「HTML」という文字列はエンコードに含めていなかったし、上記メッセージでも「.html」は普通に表示されていたので、ずーっと日本語部分だとばかり思っていた。

Not Foundだけのメッセージならもっと早く気付いたかもしれないが、このメッセージは迷わすなぁ・・・。
きっとここのメッセージの文字化けとNot Foundは因果関係がないのだろう。

0 件のコメント:

コメントを投稿