• 締切済み

文字列データ量

初歩的な質問で申し訳ありません。 HTMLのテキストエリアでPOSTした文字列が100Kバイト以下と以上とで処理を別けたいのですが、文字列のデータ量はどのようにしたらわかるのでしょうか? 単純に getBytesとかでしょうか? あまり詳しくはないのでやさしく教えてくださるとうれしいです。 やりたいこととしてはヤフーの形態素解析をかけたいのですが、 1リクエスト100Kバイト以内の制限になっています。 しかし、リクエストにはUTF-8の文字列を使うため、おそらく入力した文字列をUTF-8に変換して、その文字列が100K以内であるというのが条件だと思います。 現在UTF-8に変換してリクエストするまではできているのですが、100Kを超えてしまった場合にフリーズしてしまい困っています。 100K以内ならそのままリクエスト。 100K以上なら超えた分は別リクエストということをしたいと思っています。 よろしくお願いいたします。

  • Java
  • 回答数3
  • ありがとう数0

みんなの回答

  • luckymako
  • ベストアンサー率55% (29/52)
回答No.3

質問の getBytes が java.lang.String の getBytes メソッドなら 文字列を byte 型の配列として取得する関数なので取得した後 length から配列の長さ、バイト数がわかります。 String str = "ABC" int size = str.getBytes("UTF-8").length;

  • ARIA9
  • ベストアンサー率37% (3/8)
回答No.2

1リクエスト100Kバイト以内ということですと そもそもサーバではなくクライアント側で処理をわける必要があるのでは? だとするとJavaではなくJavaScriptの世界だと思うのですが。

回答No.1

>単純に >getBytesとかでしょうか? 試してみれば良いのでは? それとも試した結果、それが意に沿わない結果だったのでしょうか?

関連するQ&A

  • JSPでUTF-8の文字列表示

    JSPでUTF-8の文字列を表示することができず困っています。 HTMLの<form>でPOSTした任意の文字列をjspでUTF-8の文字列に変えたいのですが、 いろいろ試したのですがどうもうまくできません。 jspは全然くわしくないので困ってます。 以下のようなHTMLで <body> <h1 style="background:#cccccc;width:60%">文字コード変換したい文字列を入力</h1> <br> *UTF-8に変換します。 <form method="POST" action="moji2.jsp"> <textarea name="enco" cols="60" rows="7"></textarea> <br /> <input type="submit" value="変換" /> </form> </body> 以下のようなJSPファイルで <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import="java.net.*" %> <% request.setCharacterEncoding("Windows-31J"); %> <% String en = request.getParameter("enco"); String ren = URLEncoder.encode(en); %> <%=ren %> となまぁただUTF-8の文字列を表示をする勉強をしていたのですがいろいろかえてもShift_JISでエンコードされた文字列が表示されます。 例)あいうえお で入力すると %82%A0%82%A2%82%A4%82%A6%82%A8 やりたいことはこのサイトと同じことなんです http://www.tagindex.com/tool/url.html 例)あいうえお %e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a 最終目標は任意の文字列をUTF-8に変換して、ヤフーの形態素解析をすることです。初心者ですがよろしくお願いします。。

    • ベストアンサー
    • Java
  • 文字化け対策について

     JSPに文字コードを指定しているにも関わらず、  「Java側でUTF-8の文字コードを指定してあげなければ、画面遷移した画面遷移先で文字化けが起こってしまう。」という状況なのですが、これの解決方法は無いものでしょうか? 【文字エンコード状況】 ●JSP  JSP側では、画面遷移元、画面遷移先の両方とも 文字コード「UTF-8で指定」しています。 <% page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> ●Java  Java側では、  response.setContentType("text/html; charset=UTF-8");//コンテンツタイプ  request.setCharacterEncoding("UTF-8"); //コード変換    という2点をコード変換として記述しています。 【値受け渡し状況(画面表示状況)】 ●1 画面遷移元 画面1(JSP)  <input type="text" value="あいうえお" name="name1"> ●2 java(servlet)  → 画面1のname1の“あいうえお”を受取る  String strName = new String(request.getParamete("name1")); request.setAttribute("name", strName);    ●3 画面遷移先 画面2(JSP) → “あいうえお”を表示  <%= (String)request.getAttribute("name1") %>            画面状況:文字化けしている。[ォ・・サウ」(といった感じです)   ●現状の解決方法  ここで、文字化けの解決方法として、  画面1のリクエストをゲットする際に、 java(servlet)での、文字の受け取り方の記述を変更しました。  String strName = new String(request.getParamete("name1"));    から    String struserName = new String(request.getParamete("name").getBytes("ISO-8859-1"),"UTF-8");    という風に「 .getBytes("ISO-8859-1"),"UTF-8") 」 を付与してやることで、回避でききました。が、これで解決策としては妥当でしょうか?(正しいでしょうか?)    気にかかっているところが、どうもこのやり方が強引に文字を変換しているようにしか思えませんでして(実際のところは正しいのかもしれませんが・・・)このまま値を渡してやっていいのか判別が付かずに困っています。    この方法でも大丈夫でしょうか?  特別、何か問題というのはありませんでしょうか?

    • ベストアンサー
    • Java
  • 文字コード

    少し、聞かせてください。 今、WEBアプリケーションを作っています。 HTMLからのリクエスト文字を受け取りServletで処理を考えています。 そこで、 String para = request.getParameter(para); String param = new String(para.getBytes("8859_1","JISAutoDetect"); で、8859_1,Shift_JIS,EUC-JP,ISO-2022-JP の Unicode 変換することが できるのは、分かりました。 では、この HTML からのリクエスト文字が、どのタイプの文字コード でかかれているかを検出できるのでしょうか? 自分では、バイト列をつかさどる方法が浮かぶのですが・・・。 HPでもかまいませんので、教えてください。

    • ベストアンサー
    • Java
  • 8桁文字列を16進数バイト配列に変換

    お世話になります。 VB2005を使用しています。 温調器から温度データを引っ張るプログラムを作成しています。 8桁の文字列を16進数バイト配列に変換したいのですが、GetBytesでは10進数バイト配列に変換されてしまいます。 8桁の文字列又は10進数バイト配列を16進数バイト配列に変換する方法はないでしょうか? 文字列を1文字ずつ16進数に変換して配列に組み込んでいくしかないのでしょうか? よろしくお願い致します。

  • 特殊な文字列のデコードについて

    ご教授願います。 迷惑メールなどに多いのですが、下記の様に記述されている文字列があります。 ↓↓↓↓↓↓ =1B$B"(%a!<%k1\MwL5NA"(=1B(B 上記の文字列をフリーウェアの「MBaker2」でデコードすると ↓↓↓↓↓↓ ※メール閲覧無料※ の様に、読める形の文字列に変換されます。 こうした形で意図的にエンコード(?)された文字列をPHPを使ってデコードするにはどうしたら良いのでしょうか? メールクライアントのOutlook Express6等でも読めるので、一定の法則に則って変換されていると思うのですが、そのアルゴリズム(?)が判りません。 PHPのマニュアルを調べてデコード系の関数を色々と試してみましたが、どうにも上手く行きません。 前述の「MBaker2」のヘルプから、HTML特有の制御文字列と漢字コードが関係している所までは判ったのですが、ココで壁にぶつかってしまいました。 PHPで人が読める形にPHPで処理するにはどうしたら良いのでしょうか? 宜しくお願いします。 P.S PHPのバージョンは 5.2.6 を使い、PHPでの入出力は、UTF-8で統一しています。

    • ベストアンサー
    • PHP
  • 文字列のバイト数を取得したい

    処理中に渡ってくる文字列のバイト数を取得したいのですが、 そういった関数はありませんでしょうか? 探しても見つかりませんでした。 文字列はUTF-8かSJISで渡ってきますので、両方に 対応していると嬉しいです。 対応していなければ渡ってくる前に文字コードを 変換します。 どなたかご教示下さい。

    • ベストアンサー
    • PHP
  • EUC_JPの文字化け

    指定された文字列(String型)を以下の様にバイト配列で保持し、 byte[] work = "指定文字列".getBytes(encoding); そのバイト配列を使用し、再度、以下の様にStringを生成します。 new String(work, encoding); (作成したプログラムを添付したいのですが、文字数の関係で割愛します。) 指定文字列は機種依存文字(丸数字等)にします。 この時、encodingにMS932、UTF-8等を指定した場合は問題なく元の文字列が 取得できますが、EUC_JPを指定すると、?に文字化けを起こします。 調査すると、getBytesでbyte配列を取得した時点で既に変換不良を起こしていました。 (丸数字全てが0x3fになっていました。期待していたコード、というか本来は、0xADA1~0xADB4のはずです。) そこでStringクラスのgetBytesメソッドをオーバーライドしちゃえという、甘い考えが浮かび、 javaのソースコードでString.javaを見ましたが、結局のところ、どこでコード変換を行っているのか よくわかりませんでした。 そこで質問です。 1)これはJDKのバグなのですか? 2)こんな経験がある。あるいはこういう対処をした。というかた、おりましたら、   参考URLでも構いませんが教えてください。 以上、よろしくお願いします。

  • 文字列から整数導き出したい

    お世話になります。 現在、簡易的な占いのプログラムを作ってみています。 フォームに入力された文字から占いの結果を表示するようなものを 作りたいのですが、中々うまくいきません。 仕組み的にはフォームから文字列をPOST⇒10進数の整数に変換⇒10進数の整数に対応する占い結果を表示という形を考えています。 文字列をbin2hex関数で16進数にはできるのですが、16進数から10進数変換する方法がわかりません。 何かより方法がありましたらご教授ください。

    • ベストアンサー
    • PHP
  • javaの文字列の操作に関する質問(その2)

    下記の如く、文字列を変換するサブルーチンはどうなるでしょうか。 注)文字列の文字は10進数のみですが、小数点を含むことがあります。 変換前の文字列 変換後の文字列 "978" ---------->"900" "12" ---------->"10" "56789" ------->"50000" "7" ------------->"7" "978.0" ---------->"900" "12.9" ---------->"10" "56789.5" ------->"50000" "7.9" ------------->"7" 変換規則:最上位の文字はそのままで、それより下の桁の文字は0とする。 簡単で旨く変換できる方法はありますか? 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • PHPでの文字列置換について

    こんにちは PHPにて丸カッコ内の文字列を取得しようとしています。 対象の文字列は、「坂(さか)」という文字列の全角丸カッコ「()」内になります。 正規表現でやればすぐに取得できるのかもしれませんが、正規表現の知識が無いため 力ずくでやってみようとしました。 そこで、「(」で文字列の位置を取得して…と考えて色々やったのですが、 この全角丸カッコ「(」が、mb_strposでも位置を検知できず、 全角丸カッコ「(」を半角にして対応してみようかとmb_ereg_replace('(','(','坂倉武史(さかくらたけし)');としようとしても、変換されず困っております。 ちなみに「坂(さか)」という文字列は、 ネット上のあるHTMLから、file_get_contentsでURLを指定してから 取得して、その文字コードがEUC-JPなので、 mb_convert_encoding($dataXML, "UTF-8", "EUC-JP"); で、UTF-8に変更しております。 文字コードの問題のかもしれませんが、答えがみつかりません。 1。正規表現で取得できるのであれば、正規表現の書き方をお教えいただけますでしょうか。 2。正規表現が難しいのであれば、力ずくでやるのでこの「(」全角丸カッコの始まりの検知方法をお教えいただけますでしょうか。 PHPの実行環境は、 PHP5.3 mbstring.language  japanese mbstring.internal_encoding  UTF-8 mbstring.encoding_translation  ON default_charset  UTF-8 UNIX 文字コード UTF-8 ソース文字コード UTF-8 です どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう