- ベストアンサー
文字列のバイト数を取得したい
処理中に渡ってくる文字列のバイト数を取得したいのですが、 そういった関数はありませんでしょうか? 探しても見つかりませんでした。 文字列はUTF-8かSJISで渡ってきますので、両方に 対応していると嬉しいです。 対応していなければ渡ってくる前に文字コードを 変換します。 どなたかご教示下さい。
- めとろいと(@naktak)
- お礼率66% (482/721)
- PHP
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ほんとにバイト数でよいのでしょうか? 文字数とバイト数は違うので注意。 また文字数はコードの判定がミスすると思わぬ誤処理になるので注意。 <?PHP $str="あいうえお"; $byte=strlen($str); print $byte; $moji=mb_strlen($str); print $moji; ?>
関連するQ&A
- VB2005でJIS拡張漢字の各文字コードを取得する方法
ある関数に文字列を渡して各文字コードを取得するプログラムを作成しようとしています。 基本的な文字のコードは取得できるのですが、JIS拡張漢字のほとんどが正しく取得できません。 失敗している文字は内部的に「?」(3F)となってしまいます。 例:拡張漢字のコード値(SJIS:81B2)を変換するとコード値が「3F」になってしまう。(テキストエディタなどで文字化けすると「?」に化けるのと同じなのかな?) 正しく文字コードを取得する方法をご存知の方、またヒントなどありましたらよろしくお願いします。 【環境】WindowsXP VisualBasic2005 【プログラムの流れ】例:SJISコードを取得する場合 文字列を受取る→1文字取得→System.Text.EncodingでSJIS指定のバイト型配列文字に変換(文字コードを取得)
- 締切済み
- Visual Basic
- 文字数が決まっていないの文字列を自動に取得して別の文字列に変換
取得して切り出す文字列の長さが固定で無い場合には、どのようにしら良いのでしょうか? 例: ある適当な文字列を分割 ETUROGO → E T U R O G O の様に一文字ずつ分割 各文字を他の文字列に変換 E→ 2 や T → 電話 のように全文字を 他の文字に変換 この文字列の長さが固定ならば範囲をして変換 する事が出来るのですが、 取得文字列(この場合は、ETUROGO)の長さが 3文字~20文字程度で決まっていない場合 どのようにしたら自動で変換されるのでしょうか? LEN関数で文字数を取得 LEFT関数やMID関数等で文字列を切り出す。 という事までは考えたのですが。 文字数が変化してしまうとやり方が分かりません。 また、上記の場合は英文字なのですが同様に 文字列の長さが固定ではなく(4文字~20文字の間) ”東京携帯配備” を ”東京” ”携帯” ”配備” のように単語で分割し同様に他の文字列に変換 するという場合は、少し異なるのだと思うのですが INDEX関数等を使えば良いのかな? とも思うのですが過去の例を見ても理解出来ません。 どうかお教え願います。宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- 特殊記号 '―' の扱いについて困っています
はじめまして、PHPにおける特殊記号の取り扱いについて質問させていただきます。 以下の処理を行っているのですが特殊記号'―'(ダッシュ)の扱いで悩んでいます。 1.文字コード'utf-8'のファイル内文字列をget_filecontentsで取得 2.取得文字列を'SJIS'に変換(mb_convert_encoding使用) 3.文字列内に'―'が存在していた場合'?'となってしまう ex)"今日の野球結果 5―6"(文字コードutf-8) ->SJIS変換後 "今日の野球結果 5?6" 特殊文字'―'を文字コード変換できずに上記のような現象が起こっていると思うのですがこれを回避する方法がありましたらご教示お願いします。
- 締切済み
- PHP
- char型からのバイト数取得
文字列から1文字ずつバイト数を取得(判定)したいのですが、 char型の文字のバイト数を取得するスマートな方法はありますか? 今考えているのは以下のようなコードです。 String str ="あA" for(int i=0; i < str.length(); i++) { char ch = str.charAt(i); StringBuffer SB = new StringBuffer(); SB.append(c); if(SB.toString().getBytes.length == 1) { //1バイトの処理 } else { //2バイトの処理 } }
- ベストアンサー
- Java
- 8桁文字列を16進数バイト配列に変換
お世話になります。 VB2005を使用しています。 温調器から温度データを引っ張るプログラムを作成しています。 8桁の文字列を16進数バイト配列に変換したいのですが、GetBytesでは10進数バイト配列に変換されてしまいます。 8桁の文字列又は10進数バイト配列を16進数バイト配列に変換する方法はないでしょうか? 文字列を1文字ずつ16進数に変換して配列に組み込んでいくしかないのでしょうか? よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 文字列のエンコードについて
例えば以下のコードで日本人がターゲットのサイトを作ったときにエンコードがutf8以外ってありますか?idなどもutf8でなんとかなるのになぜ他の文字コードは必要なのですか? //SJISに変換 $str = "私のidはrxxdtggb63332224667です。"; $result = mb_convert_encoding($str, "SJIS"); echo $result . "\n"; //UTF-8に変換 echo mb_convert_encoding($str, "UTF-8"); //SJISに変換 $str = "gcdddyyghgcc.jpg"; $result = mb_convert_encoding($str, "SJIS"); echo $result . "\n"; //UTF-8に変換 echo mb_convert_encoding($str, "UTF-8");
- ベストアンサー
- PHP
- バイナリファイル中の日本語文字列の取り出し
C++にて,バイナリファイル中から日本語の文字列を取り出す処理に苦心しています. 具体的にはPDFファイルのXMPの記述部のXMLに日本語が含まれる場合なのですが,日本語(この場合はUTF-8ですね)の部分が含まれる部分をfread()で読み出してchar[]型の配列に入れて,printfで表示する(漢字コードの変換処理はとりあえずnkf等でUTF-8→SJISに変換)と文字化けします. Javaで同じような処理をしたときは,String の変数にUTF-8で日本語の文字列が挿入され,その文字列を扱うことができたのですが,C++での扱いがわかりません. ご教授よろしくおねがいします.
- ベストアンサー
- C・C++・C#
- 文字列のバイト数を調べる
文字列の文字数は数えればわかりますが、そのバイト数となると数え方がわかりません。 数える方法を教えてください。 よろしくおねがいします。
- ベストアンサー
- その他(データベース)
お礼
ありがとうございます。私も先日、ただstrlen()してあげれば いいじゃん、という事に気づきました! バイト数で問題ありません。ありがとうございました。