none
Getencodingで、JISの半角カナコードを取得したい RRS feed

  • 質問

  • 文字列があって、

    Encoding jisEnc = Encoding.GetEncoding("iso-2022-jp");
    bRec = jisEnc.GetBytes(strTmp.Substring(i, 1));

    半角カナコードを取り出そうとしているのですが、
    GetEncoding関数ではJISコードで半角カナコードを変換しようとすると、
    全角のかなコードがエスケープシーケンスが含まれた状態で取得されてしまいます

    直接JISの半角仮名コードを取得する方法はないでしょうか
    strTmp.Substring(i, 1)="ア"

    というような感じで比較して、テーブルで自分で変換するしかないのでしょうか
    if文だと、全角、半角のカナ文字は判定できているようですが・・・

    2012年11月22日 13:26

回答

  • エスケープシーケンスがないと別の文字になってしまう以上、エスケープシーケンスが付くのは仕方のないことです。

    「取り出す」というのがちょっとよく判りません。もうちょっと大きい単位で、何がしたいのかを書いて頂ければ(例えば半角カナを全角カナに変換したいとか)コメントしやすいですね。

    • 回答の候補に設定 佐伯玲 2012年11月26日 4:21
    • 回答としてマーク 佐伯玲 2012年11月29日 4:28
    2012年11月22日 14:02
  • csISO2022JPが半角カナを許可しているようです。

    Encoding jisEnc = Encoding.GetEncoding("csISO2022JP");

    • 回答の候補に設定 佐伯玲 2012年11月26日 4:21
    • 回答としてマーク 佐伯玲 2012年11月29日 4:28
    2012年11月22日 14:03
  • ISO-2022-JPには半角カタカナは含まれていません。存在しない文字を指定してもできないのは当然のことです。

    # 使えるのは、リンク先にも書かれているように、ASCII、JIS X 0201-1976、JIS X 0208-1978、JIS X 0208-1983の4種類だけです。

    対策はEncodingクラスに説明されています。t.jinさんが書かれているようにcsISO2022JPを使うことでしょう。

    # 日本語 (JIS 1 バイト カタカナ可)  ってちゃんと書かれています。

    • 回答の候補に設定 佐伯玲 2012年11月26日 4:21
    • 回答としてマーク 佐伯玲 2012年11月29日 4:28
    2012年11月22日 15:01

すべての返信

  • エスケープシーケンスがないと別の文字になってしまう以上、エスケープシーケンスが付くのは仕方のないことです。

    「取り出す」というのがちょっとよく判りません。もうちょっと大きい単位で、何がしたいのかを書いて頂ければ(例えば半角カナを全角カナに変換したいとか)コメントしやすいですね。

    • 回答の候補に設定 佐伯玲 2012年11月26日 4:21
    • 回答としてマーク 佐伯玲 2012年11月29日 4:28
    2012年11月22日 14:02
  • csISO2022JPが半角カナを許可しているようです。

    Encoding jisEnc = Encoding.GetEncoding("csISO2022JP");

    • 回答の候補に設定 佐伯玲 2012年11月26日 4:21
    • 回答としてマーク 佐伯玲 2012年11月29日 4:28
    2012年11月22日 14:03
  • ISO-2022-JPには半角カタカナは含まれていません。存在しない文字を指定してもできないのは当然のことです。

    # 使えるのは、リンク先にも書かれているように、ASCII、JIS X 0201-1976、JIS X 0208-1978、JIS X 0208-1983の4種類だけです。

    対策はEncodingクラスに説明されています。t.jinさんが書かれているようにcsISO2022JPを使うことでしょう。

    # 日本語 (JIS 1 バイト カタカナ可)  ってちゃんと書かれています。

    • 回答の候補に設定 佐伯玲 2012年11月26日 4:21
    • 回答としてマーク 佐伯玲 2012年11月29日 4:28
    2012年11月22日 15:01
  • こんにちは、いちろう さん
    フォーラムオペレータの佐伯 玲 です。
     
    その後の状況はいかがでしょうか?
    みなさんから参考になりそうな情報がたくさん寄せられておりますので一度ご確認くださいませ。
    参考になりそうな情報だと思われたので勝手ながら私のほうで「回答としてマーク」とさせて頂きました。
    もしお試しいただいてうまくいかないことやわからないこと等ありましたらこちらのスレッドをご活用くださいませ。
     
    宜しくお願い致します。
    __________________________
    日本マイクロソフト株式会社 フォーラム オペレータ 佐伯 玲
    2012年11月29日 4:27
  • すいません。返信遅れてしまいました。
    こちらで教えていただいた、

    Encoding.GetEncoding("csISO2022JP");

    でいったんS-JISの半角カナを取得し、
    半角のカナだったら先頭ビットを0にすることで何とかなりました
    アルファベットとカナが同じコードでかぶっちゃうのですが(エスケープシーケンスが間に入らないと判別できない・・)
    「そうしてください」という注文だったので、これで解決しました。

    ありがとうございます

    2012年12月7日 5:22
  • 私の提示したリンク先を読んでいないのでしょうか?

    csISO2022JPの他にも日本語 (JIS 1 バイト カタカナ可 - SO/SI)の50222もありますよ。

    2012年12月7日 5:31