意外とはまってしまった文字コード変換

意外とはまってしまった文字コード変換

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

文字コードって

文字コードとは、文字や記号をコンピュータで扱うために、文字や記号一つ一つに割り当てられた固有の数字のこと。

この中でも最もポピュラーな文字コードとして普及されている文字コードに『ASCII(アスキー)コード』というものがあります。これはローマ字、数字、記号、空白文字など128文字が収録され、整数でそれぞれが表現されています。

今回はこの文字コードではまってしまった初歩的だけど知らないときっと同じようにはまってしまうコトについて書いていきます。

カスタマイズで特定の記号文字を許容する

私が今担当している運用・問い合わせ業務では、メインミッションのひとつとして、クライアントからの依頼で既存サービス内でまかなえないけど、どうにかしてこれを実現できないか?という内容をカスタマイズという形でJavaScriptを書いてより近い形での実現を提供するというものがあります。

今回の依頼は、ある入力フォームの項目に対して、特定の記号を許容し、それ以外の記号が入力されたらエラーを返してあげるというカスタマイズ依頼でした。

本来は、サービス内の機能でその項目に許容したい記号の正規表現を記載してあげれば完了という至ってシンプルな対応だったはずなのですが・・・。

どう頑張ってもある文字が正規表現でうまく反応してくれませんでした。

それは『円マーク』

この円マークが入っていたことで、やむなく記号を文字コードに変換してその文字コードを許容するというJavaScriptを書くことになりました。

WindowsとMacの壁

早速円マーク(¥)を含めてカスタマイズが完了した項目を動作確認するためWindowsでチェックしました。
問題なく許容してくれています。

今度はMacでチェックをすると・・・なんと許容してくれていませんでした。
しかも代わりに、バックスラッシュ(\)の文字コードが許容されてしまいました。

調べてみると、なんと円マークはmacとWindowsで文字コードが異なることがわかりました。

mac:165
Windows:92

さらに、バックスラッシュの文字コードが

mac:92

だったのです。(これ、結構有名な文字化けでした。そういえばmacで通販のサイトなんかを見たりすると、合計金額のところが¥1,000と表示されるはずが\1,000となってしまっているのをよく見かけてました。)

正規表現で円マークだけうまくいかなかった理由もおそらくこいつが原因のようです。

また、この問題のせいで、今回の許容文字の中にバックスラッシュは含まれていないため、macだけ文字コード92は許容しないという対策を取る必要がでてきました。

結局、クライアントに相談したところ、バックスラッシュはほぼ入力されることのない箇所でしかもmacユーザーのみなので、macのみバックスラッシュ許容という形で幕を閉じました。

しかし、今後も同様の依頼が来た際には、対応策を考えないといけませんね!

メールなんかでも、普段何気なく使っていた文字や記号も、受け取る側によっては文字化けして見れない・想定しているものと違う見え方になっていることがあるかもしれないので、これから私も注意して書いていこうと思います。

それでは、また!

ソフトバンク・au・ドコモの方は、公式のオンラインショップを利用すれば頭金不要で通常のショップよりお得に購入できます。

【週刊bitWave】(メルマガ)始めました!

登録はこちらからメールアドレスを入力してお申込みください。

ご登録いただいたメールアドレスは 【週刊bitWave】の更新情報の配信にのみ使用します。

個人情報の取扱いに関しては、「プライバシーポリシー」をご確認ください。解除はいつでもこちらから行うことが可能です。

あなたにおすすめ

仮想環境で『Ansible』を使ってサーバ構築... 最近、サーバ構築を実施する必要がありました。 まずは仮想環境を作り、サーバ構築を……と思ったのですが、私はインフラ周りの経験が浅く、色々困ったことが頻出してしまいました。 今回の記事では、私と同じような “サーバ構築ビギナー” ...
「Puppeteer」+「LINE Notify」でサイトの更新時のみ通知を受け取ってみる... 前回の記事では閲覧数向上が期待できそうなキーワードの「Puppeteer」と「LINE Notify」のそれぞれの解説、およびサイトのサムネイルを通知してみるといった試みを実施してみました。 <bitWave関連記事『「Puppeteer...
Vue.jsで社用登録データフォームを作ってみた... 今回は社内用データ登録フォームを作ろうと思い、初めて「Vue.js」を試してみることにしました。 「Vue.js」は使い方、書き方も簡単で、初心者もすぐ活用できるjsだと思いましたので、この場を借りて共有させていただきます。 なお、...
「Puppeteer」+「LINE Notify」でサイトのサムネイルを通知してみる... 今回は記事閲覧数が期待できそうなキーワードを用いて、ブログを書いてみようかと思います。 そのキーワードとは…… 「Puppeteer」と「LINE Notify」。 「Puppeteer」って何? 「LINE Notify」って...