Java 文字列のバイト数を取得する方法 - Stringクラス ホームページ制作 | 墨田区

Java 文字列のバイト数を取得する方法 – Stringクラス

LINEで送る
Pocket

Java でバイト数を取得する方法をご紹介します。文字列長ではなく、バイト数ですのでご注意ください。

String#.length とすると、文字列長を取得できますね。
たとえば、「あいうえお」の文字列長を知りたいとなれば、答えは 5 となります。

しかし、「あいうえお」のバイト数を知りたいとなれば、答えは 文字エンコードにより変わってきます。

サンプルソースを見ながら解説していきます。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


サンプルソース


/**
 * 文字エンコーディング Shift_JIS での文字列のバイト数を取得
 *
 * @param value 処理対象となる文字列
 * @return 文字列のバイト数
 */
public static int getByte(String value) {
    return getByte(value,"Shift_JIS");
}

/**
 * 指定した文字エンコーディングでの文字列のバイト数を取得
 *
 * @param value 処理対象となる文字列
 * @param enc 文字エンコード("Shift_JIS", "UTF-8" etc...)
 * @return 文字列のバイト数
 */
public static int getByte(String value, String enc) {
    if ( value == null || value.length() == 0 )
        return 0;
    int ret = 0;
    try {
        ret = value.getBytes(enc).length;
    } catch ( UnsupportedEncodingException e ) {
        ret = 0;
    }
    return ret;
}


取得の方法としては、String#getBytes().length を利用します。
この getBytes() には、引数として、文字エンコード ( Shift_JIS や UTF-8 など) を渡すことができます。
[注]引数の文字エンコードが対象外ですと UnsupportedEncodingException が発生します!

通常、実務では Shift_JIS での値チェックが多いと思いますので、今回は、文字エンコードを指定しない Shift_JIS 用の getByte メソッドも用意しました。

テスト


ここでは、StringUtils というユーティリティクラスに static メソッドとして記述しています。
こうすることで、ソースを美しく保つことができます。

それでは、早速テストしてみましょう。
せっかくなので、String#.length とも比較してみましょう。

また、1 つだけ UTF-8 の文字エンコードを指定してみます。

System.out.println("############### String#.length ################");
System.out.println("あいうえお".length());
System.out.println("ABCDEFGHIJ".length());
System.out.println("1234567890".length());
System.out.println("############### StringUtils.getByte ################");
System.out.println(StringUtils.getByte("あいうえお"));
System.out.println(StringUtils.getByte("あいうえお", "UTF-8"));
System.out.println(StringUtils.getByte("ABCDEFGHIJ"));
System.out.println(StringUtils.getByte("1234567890"));

結果

結果は、以下のようになりました。
############### String#.length ################
5
10
10
############### StringUtils.getByte ################
10
15
10
10

String#.lengthStringUtils.getByte の差は冒頭でも記載した通りで、文字列長とバイト数の違いがよくわかると思います。

おや? UTF-8 を指定した時だけ、バイト数が変わっていますね。
これは、Shift_JIS の場合、日本語文字は 2 バイトですが、UTF-8 の場合、日本語文字は 3 バイトだからです。
UTF-8 についての説明はここでは割愛しますが、詳しく知りたい方は Wikipedia で調べてみましょう。

実務の環境によっては、サーバ環境が UTF-8 でありながら、
システム内の文字列チェックは Shift_JIS でおこなうというのが通常です。

文字エンコードについても十分な理解が必要ですね。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

Javaの勉強が思うように進まないときは!

Javaの勉強が思うように進まないのであれば、プロに直接質問ができる プログラミングスクール を検討してみてはいかがでしょうか?プログラミングスクールに申し込めば、短期間で一定のスキルを身に着けることができます!

Javaコースあり!オンライン完結型 テックアカデミー TechAcademy [テックアカデミー]

どこかに通う必要なく、自宅でプログラミングやアプリ開発を学ぶことができるのが特徴のスクールです。未経験からプロになるまで最短4週間という、超短期集中型の学習ができます。年齢層は10代〜40代の男女が中心で、学引があり多くの学生が受講しているそうですよ。オンラインで受講ができるスクールですので、全国どこからでも学習ができますね。

更にさらに、パーソナルメンターにチャット質問できちゃうんです!!

これは素晴らしいことですよ!ハマったり困ったことが起こるのがプログラミングの世界。知っている誰かに聞けば数分で解決することが、自分だけだと何時間もかかったりしますから!いや、これホントですよ。

しかし、便利な世の中になりましたよねー。一昔前ではオンラインで学習できるなんて、思いもよりませんでしたから。講師もバリバリのエンジニアですので、現場で使えるスキルを教えてもらえます。なんとも素晴らしいスクールがあったものですね。学割を使えば社会人より半額以下で受講できますから、学生さんには超おすすめです。

これから Java プログラミングを勉強して、将来はプログラマーとして活躍したいと思っている方には、就職保証付きJavaエンジニアコース というのがおすすめです。就職先まで保証してくれるとなれば、もう安心して学習に専念できますね。夢への第一歩はここから始まるのかも。あ、将来はライバルですね^^

オンラインスクールですから営業エリアは全国です。
気になる方は一度チェックしてみてください。無料の動画説明会も常時開催していますよ。


Javaコースあり!未経験者にウケてる KENスクール パソコンスクール・パソコン教室 【KENスクール】個別指導のWeb-DTP・OA・IT PCスクール

理解度や学習ペースに合わせて、一人ひとりが納得して前進できる授業を提供してくれるのが特徴です。特に課題製作は現場さながらで、実務に即したものとなっていますので短期でのスキルアップが望めます。自宅学習のサポートも充実していて、授業内容をいつでもビデオで振り返ることができるのもうれしいですね。好きな時間に好きな場所で、無理なくスケジューリングできるので、仕事の忙しい方でも柔軟に学ぶことができますよ。

更にさらに、なんと 就職サポート をしてくれるというのですから驚きです!!

履歴書の書き方から面接指導、求人の紹介など、具体的な就職先まで提案してくれるんです!私も「もっと早く出会いたかったなぁー、こんなスクール」・・・って思っちゃいました^^

東京・神奈川・愛知・大阪を営業エリアとされています。
まずは気軽に 無料体験予約 に申し込んでみるのもアリですよ。


コメントを残す

お名前 (必須)
メールアドレス
(アドレスは公開されません)

コメント(必須)

Trackback URL