• 締切済み

全角文字を文字化けしないで切るには?

今、掲示板を作っています。 題名だけをツリー状に表示しようと思っていて、 長すぎる題名を30バイトでくぎろうと思っているのですが、 文字に半角などが混じっていて、30バイト目と31バイト目に全角が入ってしまうと、文字化けをしてしまいます。 どのようなプログラムにすれば文字化けをふせげるのでしょうか?

みんなの回答

  • panda0000
  • ベストアンサー率35% (59/165)
回答No.1

こちらが参考になると思います。 http://www.ybi.co.jp/koike/qa3000/qa3491.htm

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • COBOLでの全角文字の判定をしたい。

    商品マスタの名称 X(80)には半角全角が混在しています。 ジャーナルファイルの商品名称はX(40)しかありません。 マスタから名称を設定するときに単純にX(80)→X(40)とするとちょうど文字の切れ目ならいいのですが、全角文字がまたがっていると文字化けしてしまいます。 そこで40バイト目が全角だったら 39バイトしか転送したくありません。 40バイト目が全角かどうか、どう判定すれば出来ますか?

  • substr で全角半角混在の文字列を抜くには…

    全角と半角の混ざった文字列で下のようにすると、1byte文字が混ざったときの最後の1文字が文字化けします。 $kensaku = substr($namae, 0, 10); 原因は分かったので色々なサイトを調べたのですが、頭がついてきません… 全角だけのときは10byte 半角が奇数混じったときは11byte 半角が偶数混じったときは10byte を$kensaku に渡すには どの様な記述をすればいいのでしょうか? 既出の質問で申し訳ございませんが、どうぞ宜しくお願い致します。

    • ベストアンサー
    • Perl
  • ネットスケープでの掲示板の文字化け

    掲示板に書き込む際ですが、投稿者・メール・題名・内容 とあって、メールの欄にはアドレスを書き込むと投稿者をクリックした場合、メールフォームが表示されますよね? この欄に、たとえば 「こんにちは」と入れると、IEでは投稿者のアドレスが「こんにちは」と表示されます。 ところがネットスケープから書き込むとこれが文字化けしてしまいます。(アドレスのような半角文字は有効に表示されます)以前はネットスケープでも全角(日本語)が読めたのですが、どこか設定をいじったのかいつの間にかこうなってしまいました。本来の使い方ではないのですが、どなたかネットスケープのこの部分の全角が読める設定の仕方をお教え頂けませんでしょうか? ネットスケープは最新版で、その他の部分は正常に表記されます。

  • 半角文字と全角文字の判別の仕方

    MFCです。 テキストファイルから読み込んだ文字を一定の文字数づつウィンドウに書き込もうとしています。 例えば10文字を一行として 10文字 10文字 10文字 ・ ・ ・ という感じで表示したいのですが、テキストファイルには半角文字と全角文字が混じっています。半角だけなら10バイトごとに表示すればいいと思いますが、半角も全角も一文字としてカウントしようとすると半角か全角かを判別してからカウントしなければならないと思うのですが、何か良い方法ありませんか? よろしくお願いします。

  • 全角日本語について

     全角日本語はchar型を2つ連続で続けて出力しないといけませんよね。半角だと1バイトですむところを2バイト使っているわけですけど。半角と全角が入り混じったテキストから的確に1文字ずつ取り出すことは出来ないのでしょうか?(2バイトずつ取り出すと、半角のところで文字化けになってしまいますし、1バイトずつだと全角のところが文字ばけしますよね。)半角の時は、半角を、全角の時は全角をという風に。。。  あと、全角の日本語を一文字として扱う型は何かないでしょうか。いつも、charの配列でchar[0],char[1]として使っているのですが。 ちなみに、windows98でBorlandのTurbo C++を使って、C言語で書いています。 なにとぞ、よろしくおねがいします。

  • 半角全角混合の文字数

    掲示板を作成しています。 たとえば、書き込み時にタイトルが半角20文字を超えたら、それ以降は削除しその末尾に「…」を加える。といったようなことをしたいのですが、半角と全角を混合したタイトル(たとえば、半角19文字で、最後に全角1文字)だと文字化けをおこしてしまいます。こういう場合は多めに半角21文字にすればいいとは思いましたが、 区切り方が単純に、 $title =substr($title,0,20) . "…"; としているので現時点では実現していません。そこでなにかスタイリッシュでいい方法は無いでしょうか?アドバイスだけでも結構です。文字コードはsjisなのですが、移植性のある方法があればよろしくお願いします。

    • ベストアンサー
    • Perl
  • 掲示板の文字化け

    ある掲示板の書き込みで… 漢字と?が混ざった書き込みがされていました。 ?のところは表示できなかった文字の部分を半角の ?に置き換えて表示しているのだと思いますが、 このような表示を文字化けしないで見る方法はあるのでしょうか? ちなみにカタカナ半角のものではありませんので、 よろしくお願いします。

  • eval 半角カナが文字化けする

    初めて投稿させていただきます。 半角カナが混ざっている文字列をevalすると、文字化けする場合があります。 どうすれば文字化けしないようになりますか? ちなみに全ての半角カナを全角カナに置換してevalを行いその後、半角カナに戻すということをやったのですが、もともと全角カナ文字まで半角カナに変換されてしまいました。できれば全角カナは全角カナ、半角カナは半角カナのまま文字化けせずにevalする方法を教えてください。

    • 締切済み
    • PHP
  • CString型 全角半角を意識せずに「1文字」ずつ取り出す

    CString型の文字列に格納されている文字を1文字ずつ取り出したいです。 ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。 半角だけなら、str[0] str[1]...という風に取り出せますが、 全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。 その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを、下記のような感じの関数として作りたいです。 CString ripString(CString str,int index){ //ソースとなる文字列、n文字目 /*~処理~*/ return 文字列; } たとえば"あaいbうcえdおe"という文字列を入れると、 CString str="あaいbうcえdおe"; ripString(str,0) →結果 "あ" ripString(str,1) →結果 "a" ripString(str,2) →結果 "い" ripString(str,3) →結果 "b"  ・  ・  ・   こういうことをするのに良い方法はありますか? 1バイトごとのそれぞれの文字自身が、 ・半角文字なのか ・全角文字の前1バイトなのか ・全角文字の後1バイトなのか これをプログラム的に判別する方法があればいいのですが・・・悩んでいます。

  • C言語で全角文字を扱いたいのですが、

    C言語で全角文字を扱いたいのですが、 全角文字列を入力して特定の箇所の文字(例えば3文字目)を抜き出して、表示するという感じのプログラムをしたいのですが、うまくいきません。 半角文字ならば、配列を使ってできるのですが・・・・・

このQ&Aのポイント
  • EPSON社製品のロール紙が終了した時、残りの用紙が噛んででなくなる問題が発生します。
  • この問題を解決するためには、ロール紙の終了を検知して自動的に用紙を切り替える機能が必要です。
  • EPSON社製品の中には、この機能が備わっているモデルもありますので、購入時には注意が必要です。
回答を見る

専門家に質問してみよう