日記

インターネットで半角カナは文字化け?

1 Mins read

Webの世界では昔から
「半角カナ文字は使用しないでください」
との表記を良く見かける。

昨今の上記問題点について改めて確認した情報を記載しておく
・7bit以降に半角カナ番地が存在する為にEUCなどで半角カナが文字化けする
 ようするに日本語Windows(Shift-jis)などでない場合に文字化け対象になる
 
・昨今のWeb文字コードはUTF-8になっておりWindowsはもちろん、Linux環境でも半角カナも使用可能
 
・使用Webソフトが対応しているかも重要(Japanで使用できるブラウザは、ほぼ使用できる)
 
・HTTPの規定では8bt=1オクテットでの伝達を認めている
 RFC-Translations related HTTP
 
・伝送経路によってUnixサーバーなどが7bit対応しかしていないので、
 そこで文字化けするという話はHTTP規定を守っているなら嘘になる
 しかし、海外経路サーバーにてなんらかの変換プログラムを走らせている場合は文字化けする可能性がある
 HTTP規定を考えれば変換プログラムが7Bit対応しかしていない(海外では7bitが当たり前)のであれば
 これはこれで問題である

ということになっている

結果、現状の日本では半角カナのやりとりは可能と判断する。

そもそも2000年頃からJavaScriptで半角カナをCheckする関数が存在しているて、
そのjsファイルだってクライアント環境までHTTP経由で運ばれるのであるからその中に記述されている
チェック用の半角カナ文字が文字化けしてしまう可能性があるのにと管理人はいつも思っていた(苦笑)
function tozenkaku(){
       //配列を用意する
       hankaku = new Array("ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ");
       zenkaku = new Array("ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ");
       thismoji = document.test.moji.value;
       //変換開始
       for (i=0; i<=NN; i++) {               while (thismoji.indexOf(hankaku[i]) >= 0){
                     thismoji = thismoji.replace(hankaku[i], zenkaku[i]);
              }
       }
       window.alert(thismoji);
}

これは文字コードとぶつけるべきじゃないと(上記半角カナ文字はちゃんと表示されてるでしょ?)
ここに便利なのがあります。作者様感謝です!

この問題はWebアプリとDBの絡みでも文字コード問題として発生している、やはり海外では7bitのことしか
考えていない製品が昔は多く、半角カナがそもそも入らないDBもあればSort処理が機能しないというのもあったが
現在ではshift-jisはもちろんIBMのDB2ではwindows-31jの使用も可になっており大分、半角カナも使用に耐える
ようになってきており、UTF-8の登場で使用環境が整ってきた感じがある。

DBまで話が広がったが、要するにWebServer、AppServer(perl,php,Javaなど)、DBServerとアプリに欠かせない
オーケストラ者たちが外国圏から生まれており、おのおので8bit動作にそれぞれ問題を抱えていたために
「使えないのは仕様です」で開発者が逃げていた感じだと(笑)

なぜ半角カナにこだわるのか?

日本の金融業では昔から半角カナが顧客管理(読み方)に必須項目になっており、ホストにも情報があがっている
情報管理として読み方なんてアルファベット圏ビジネスでは無いのでは?(笑)
ここが日本のストロングポイント?じゃなくて半角カナの切っても切れない日本事情になっている

今尚、金融は絶対ホスト至上なのでどうしても最後にはInで半角カナ、Outで半角カナが存在するcsvが多い。
銀行間などでは全銀手順プロトコルで半角カナも通している

まとめるとシステムの役割は人間の行動を潤滑させるためにあり、日本の習慣、文化で半角カナを昔から必然的に
使用しているのだから、システムは仕様で出来なくさせるのではなく、人間に優しい機能を充実させるべきである。
システムに人間があわせるのではなく人間にシステムが合わせるのが正しい。

最後に半角カナを全面的にWebで使用することをお勧めしないしているのではなく、可能性として
使用に耐えるだけの環境になってきていると感じる今日この頃である。

補足:メールですが、ESTMPやクライアント環境は8bit化されていると思いますが、7bitの考えですので、Base64使うか、半角カナはやめましょう(苦笑)

Related posts
日記

Swagger EditerをDockerでローカル起動

1 Mins read

swagger

API開発で設計したDocment管理として使用できサンプルコードとしてJSONにしてくれて、よしなにPostmanみたいな動きしてくれるやつ

最近現場で使っているところが増えてる

ローカルでサーバー起動(例は3つ、外部APIサーバーが3つある場合などなど)

docker pull swaggerapi/swagger-editor
docker run -d -p 8090:8080 swaggerapi/swagger-editor
docker run -d -p 8091:8080 swaggerapi/swagger-editor
docker run -d -p 8092:8080 swaggerapi/swagger-editor

http://localhost:8090 などをブラウザで開き

ソース管理と一緒にリポジトリ内などにあるyamlファイル内容をコピペでブラウザ左Windowへ貼り付け

get、postなどテストをおこなう

※APIなので多少仕様の理解が必要となる

よく一緒に使われるのが OpenAPI

こちらはAPI設計ファイルとなったyamlファイルを読み込ませることにより指定した言語としてI/O部分のソースコードを自動でジェネレートしてくれるツール、ただし良いところばかりではなく、間違ったソースもジェネレートしてくるから地雷除去が必要な場面に出くわすこと多い

 

 

日記

AlmaLinux 8 GPG キー変更の準備をする

1 Mins read

dnfコマンドでエラー

dnf update

AlmaLinux 8 - BaseOS 485 kB/s | 3.4 kB 00:00 
GPG 鍵 0xC21AD6EA をインポート中: 
Userid : "AlmaLinux <packager@almalinux.org>" 
Fingerprint: E53C F5EF 91CE B0AD 1812 ECB8 51D6 647E C21A D6EA 
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux 
これでよろしいですか? [y/N]: y 
鍵のインポートに成功しました 
鍵をインポートしても役に立ちませんでした。鍵が間違っていませんか?

キーが新しくなった

AlmaLinux 8 GPG キーの変更

2024 年 1 月 12 日に、更新された GPG キーを使用して AlmaLinux 8 の RPM パッケージとリポデータへの署名を開始します。以下の手順を実行すると、切り替え後も引き続き問題なくアップデートを受信できるようになります。

システムに新しい AlmaLinux 8 GPG キーが既に含まれており、それを信頼していることを確認したい場合は、それをインポートするだけです。

sudo rpm --import https://repo.almalinux.org/almalinux/RPM-GPG-KEY-AlmaLinux
日記

MongoDB、Mongo Expressの環境をDockerで立ち上げる(docker-compose)

1 Mins read

ブラウザから

http://localhost:8081

ME_CONFIG_MONGODB_ADMINUSERNAME: root 
ME_CONFIG_MONGODB_ADMINPASSWORD: password

で指定したID,Passをブラウザへ入れてもログインできない?はて?

ブラウザのBasic認証用ID,Passの環境変数追加設定が必要だったらしい

ME_CONFIG_BASICAUTH_USERNAME: admin
ME_CONFIG_BASICAUTH_PASSWORD: password

「docker-compose.yml」ファイル作成(下のコード)
「docker-compose up -d」コマンドをターミナルで実行


version: '3.1'

services:

  mongo:
    container_name: mongo-dev
    image: mongo
    restart: always
    ports:
      - "27017:27017"
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
    volumes:
      - ./configdb:/data/configdb
      - mongoDataStore:/data/db

  mongo-express:
    container_name: mongo-express
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: password
      ME_CONFIG_MONGODB_URL: mongodb://root:password@mongo:27017/
      ME_CONFIG_BASICAUTH_USERNAME: admin
      ME_CONFIG_BASICAUTH_PASSWORD: password

volumes:
  mongoDataStore:
    driver: local

Mac ターミナルからも接続確認(testDBはexpressからなどcreateしておくこと)

mongosh "mongodb://root:password@localhost:27017/testDB?authSource=admin"

Current Mongosh Log ID: 65be609e7384r68762b10b0
チームを強化する

サービスの
サブスクリプションの利点を説明するテキストを追加します。