冬の風邪予防は「鼻○○○」が新常識!?>>

PHPにて、シフトJISで書かれたファイルを読みこみ、文字コードをEUCに変換して出力させる処理を書いています。

mb_convert_encoding($str, "EUC-JP", "SJIS")にて変換させています。

ただ、以下の文字が
髙(はしごたか)、 﨑(たつさき)
うまく変換できずに
「?」という文字になってしまいます。

何か解決方法はないでしょうか??

このQ&Aに関連する最新のQ&A

A 回答 (2件)

EUC-JP ==> EUCJP-win


SJIS ==> SJIS-win
で変換できませんか?
文字化けする場合は、ここを参考にしてください。
http://rimk.smartweed.net/diarydata/text/cp51932 …

No.1さんへ
>0x967E(JIS)の「はしごたか」(JIS第3水準漢字)
JIS第3水準ではありません。IBM拡張漢字です。
    • good
    • 5

EUCでは無理です。


EUCは漢字JISコードの最上位ビットを1にすることで漢字をあらわしているので理論上0x7F7F(JIS)までの漢字しか使えません(いわゆるJIS第1、第2水準漢字)。
0x967E(JIS)の「はしごたか」(JIS第3水準漢字)はEUCコードでは表現できないのです。
    • good
    • 3

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q“髙”という字の出し方教えてください!!

“髙”という字の、句点コード・JISコード・シフトJISコードを知っている方はいらっしゃないでしょうか。今、仕事で入力しようとしたのですが出てきません。どうしても必要なため困っています。

文字の入力ツールは、ATOKを利用しています。
ちなみにコンピューターは、会計専用端末『アダムス』という端末を使用しています。

どうか、よろしくお願いします。

Aベストアンサー

「高」のなべぶたの下が,口ではなくはしご状になった,いわゆる「はしご高」ですね。

お使いのパソコンがWindows環境にあれば,次の2ヶ所にこの文字があります。
92区66点 JIS:7C62 シフトJIS:EEE0
118区94点  シフトJIS:FBFC (本来の区点コードは最大で94区94点までなのを,むりやり拡張しているので,シフトJISはありますがJISはありません。←この説明では分かりにくいと思いますが,きちんと説明すると非常に長くなるので…)
ATOKであれば,これらのコードを使った入力自体はできるはずですが,「アダムス」で使っているフォントにあるかどうかが問題ですね。
この文字はもともとJISにはない(正確には「高」と区別しないことにない)ので,Windows以外の環境(例えばマッキントッシュ)では表示されない可能性があります。
(実際,そのような環境の人がこの質問のタイトルを見ると,「“・”という字の出し方教えてください!!」のようになっているかもしれません。
もし,お使いのコンピュータ(のフォント)にこの文字がなく,それでもどうしても必要というのであれば,外字で作成することになるでしょう。

「高」のなべぶたの下が,口ではなくはしご状になった,いわゆる「はしご高」ですね。

お使いのパソコンがWindows環境にあれば,次の2ヶ所にこの文字があります。
92区66点 JIS:7C62 シフトJIS:EEE0
118区94点  シフトJIS:FBFC (本来の区点コードは最大で94区94点までなのを,むりやり拡張しているので,シフトJISはありますがJISはありません。←この説明では分かりにくいと思いますが,きちんと説明すると非常に長くなるので…)
ATOKであれば,これらのコードを使った入力自体はできるはずですが,...続きを読む

QEncode.pmで「髙」(ハシゴ高)が文字化けする

Perl5.8で、EUCで保存されたテキストファイルを読み込み、Shift-JISで保存しようとしてます。
EUCからShift-JISへの変換は、Encode.pmを使用しています。
テキストファイルに「髙」(ハシゴ高 0xFCE2)や「﨑」が入っていた場合、変換されたデータは「?」(0x3F)になってしまいます。

「髙」や「﨑」をPerlを使用してEUCからShift-JISする方法はありませんでしょうか?


======================================
use Encode qw/ from_to /;

open IN, "data.txt";
$data = <IN>;
close IN;

from_to( $data, 'euc-jp','shiftjis');

open OUT, ">data2.txt";
print OUT $data;
close OUT;
======================================

宜しくお願いします。

Perl5.8で、EUCで保存されたテキストファイルを読み込み、Shift-JISで保存しようとしてます。
EUCからShift-JISへの変換は、Encode.pmを使用しています。
テキストファイルに「髙」(ハシゴ高 0xFCE2)や「﨑」が入っていた場合、変換されたデータは「?」(0x3F)になってしまいます。

「髙」や「﨑」をPerlを使用してEUCからShift-JISする方法はありませんでしょうか?


======================================
use Encode qw/ from_to /;

open IN, "data.txt";
$data = <IN>;
close IN;

from_...続きを読む

Aベストアンサー

>Shift-JISの「髙」(0xFBFC ?)に変換したいのですが、どのようにすればよいのでしょうか。

”髙”という文字は、シフトJIS上、\xEEE0と\xFBFCにマッピングされています。
EUC-jpの\xFCE2に相当するのは、領域的には\xEEE0が妥当かと思われます。

ちなみに、nkfで、コード変換すると、\xFCE2 => \xEEE0 で変換されます。

perl標準のencode.pmでがんばるなら、Encode::FB_XMLCREFを使った上で
気に入らない部分を後から、自前コーディングで、気に入るように加工するしか
ないかと思います。

Q携帯の文字入力について

携帯ではしごの高を入力したいのですが変換しも出てきません。どなたか出し方がわかる方がいれば教えてください。

Aベストアンサー

「髙」の字は、ドコモの区点コード表にはありません。
このため、標準では出ません。

ドコモ SH-03B 区点コード表
http://www.nttdocomo.co.jp/binary/pdf/support/trouble/manual/download/sh03b/SH-03B_J_09.pdf

ですが、裏技を使えば出せます。

SH-03Bのフルブラウザで、この質問を開きます。
フルブラウザでは「髙」の字が正しく表示されています。
この「髙」を、Fn+F2キーでコピーします。

あとは、表示したいアプリを開き、再度Fn+F2キーで貼り付けを選べば、表示できます。

なお、表示できるか、出来ないかはアプリ次第です。
全てのアプリで表示できるわけではありません。

例えば・・・
「待ち受けメモ」では、正しく「髙」の字が表示可能です。
「メール」の本文には、「髙」の字は表示できません。

Q高という漢字の「はしごだか」どうすれば漢字登録できますか?

姓名判断をしたいのですが、変換しても普通の高しか出てきません。IMEパットの手書きでもはしごだかの高は出てきませんでした。
一文字違うだけで、姓名判断は意味合いが違うようですので是非とも皆様のお力を借りて登録したいです。よろしくお願い致します。

Aベストアンサー

IME パッドの部首 10画 高 で すぐにみつかりますよ(^^

Q髙と高

どっちが新字体か旧字体か教えていただける方お願いします。

Aベストアンサー

「高」に新旧の別はありません。
明治の昔から、「高」が正式な字体でした。
手書きではいろいろ書かれましたから、戸籍が正式でない異体字になっているケースもありました。
漢和辞典ではそちらは“俗字”とされていました。
もっとも、筋の悪い、誤字と言っていいような俗字ではなく、もとをただせば、そちらが正字になってもおかしくなかったほどではあります。

これに限らず、今普通でないほうの字体を「旧漢字」と言う向きがありますが、適切ではありません。
「高」「崎」「吉」など、すべて昔からこちらの字体が正字で、異体字(“俗字”)はあっても、“旧漢字”はありません。

Q「高」という漢字

高橋、ありがちな名前ですが,絶対に字を間違えてはいけない場合ありますよね。こんな簡単な字と思いつつ,後日「私の高ははしごの方です」とか,いわれてとしまった,という経験ありませんか。変換されない(ワープロやパソコンでも,でてきた試しがないというか,やり方がわかりましぇーん。(>o<)…)真ん中がはしご状の「高」みたいな字,あいつはいったい何者なんでしょうか?知ってる人からすれば,お馬鹿な質問かもしれませんが,ずーっと前から???なのです。よろしくお願いします。

Aベストアンサー

 この字はよく「ハシゴ高」と呼ばれる字です。後で述べるようにWindowsで表示することはできますが、電子メールやホームページなどでは使えない(使っても他人のパソコンでは読めないことがある)文字、いわゆる機種依存文字です。

 パソコンで使える文字はJIS規格で定められていますが、この中にハシゴ高は入っていないからです。(ただし、JISを定める会議では、入れるか入れないか紛糾したようです。)

 このような例は「高」の他にもありますが、入らなかったのには、それなりの理由があります。たとえば「普通の高」と「ハシゴ高」を別の漢字にしてしまうと、ネットでタカハシさんを検索したい場合に片方しか出てきません。

 そこでJISでは、一定の規準を設けて同じ意味の漢字を同一視しています。これを「包摂」と呼びます。つまり、JISでは「普通の高」と「ハシゴ高」は包摂されているのです。

 この辺りの事情は参考URLで詳しく解説されています。

 とは言っても、やはりハシゴ高を使いたいという声はあります。そこでWindows(のMS明朝など、いくつかのフォント)では、JISの範囲外で漢字をいくつか追加しています。

 たとえばハシゴ高は「EEE0」という番号(文字コード)で入っています。したがって、MS-IMEでコード入力すれば表示されます。

 全角文字が入力できる状態で、キーボードから「EEE0」と打ち、続いてF5キーを押してください。

参考URL:http://www.watch.impress.co.jp/internet/www/column/ogata/part1_1.htm

 この字はよく「ハシゴ高」と呼ばれる字です。後で述べるようにWindowsで表示することはできますが、電子メールやホームページなどでは使えない(使っても他人のパソコンでは読めないことがある)文字、いわゆる機種依存文字です。

 パソコンで使える文字はJIS規格で定められていますが、この中にハシゴ高は入っていないからです。(ただし、JISを定める会議では、入れるか入れないか紛糾したようです。)

 このような例は「高」の他にもありますが、入らなかったのには、それなりの理由があります。たと...続きを読む

QJIS第三、第四水準の漢字は入力可能になったか?

OSが Win 7 Pro SP-1 の私のパソコンでは、JIS第一水準および第二水準までの漢字は入力可能だけど、第三、第四水準の漢字は入力不可能です。

Windows 8 では、第三、第四水準の漢字も入力できるようになっていますか?
漢字コードで入力する場合、入力可能なコードの種類は次のドレとドレかを教えて下さい。
区点コード、JISコード、シフトJISコード、UNIコード

具体例を挙げておきます。
添付 Fig-1 の漢字(「徳」の異字体)  →第四水準
「山」冠の下に「奇」(「嵜」の異字体)→第三水準
「山」偏の右に「竒」(「崎」の異字体)→第三水準
これらの漢字をMS明朝で入力&表示できますか?

Aベストアンサー

まず表示可能かどうかについて。

PC上で文字が表示されるには次の3つが必要です。
・Windows自体の対応
・ソフトの対応
・フォントの対応

順に見ていきます。
・Windows自体の対応
これはWindows2000からすでにJIS第3第4水準の文字(を含むUnicode1面以上)に対応済みです。(ただし設定不要になったのはXPから)
No1さんの示したサイトに「現在のWindowsでは面02を利用することは不可能であり」とありますが、これはWindowsでなくソフトやフォントの対応のことを言っているのでしょう。誤解を招く書き方です。
・ソフトの対応
Unicodeに非対応のソフト、Unicodeに対応していても1面以上に非対応のソフトがあります。最近は少なくなりましたが、一部に根強く残っています。
・フォントの対応
Windowsに標準搭載されているMSゴシック・MS明朝がJIS第3第4水準の文字に対応したのはWindowsVistaからです。ただし、その後XP向けに同フォントが無償公開されていますし、フリーフォントで対応可能です。

…というわけで、表示するだけであればWindowsVistaからは何もせずともたいていのソフトで可能ですし頑張ればWindows2000でも可能です。

次に入力について。
まず、
> 漢字コードで入力する場合、入力可能なコードの種類は次のドレとドレかを教えて下さい。
> 区点コード、JISコード、シフトJISコード、UNIコード
・区点コードとJISコードは同じものです。最近のMS-IMEのIMEパッドでは使えます(図参照)。が、これはかなり特殊な例で、普通に区点コードやJISコードといったら第1第2水準のみと考えたほうが良いでしょう。
なお第3第4水準を含むのであれば「区点コード」ではなく「面区点コード」になりますがあまりこの名は見かけません。
・シフトJISコードは、第3第4水準を扱える規格がほとんど普及しませんでしたので、入力もまず見かけません。
・UnicodeはPCで扱えるすべての文字が扱えます。あまりUNIコードとは書きません。Unicodeかユニコードです。

また、MS-IMEで普通に変換してこれらの文字を出せるかどうかはバージョンや設定によって異なります。
新しいものほど変換可能な文字が増えています。設定は単漢字辞書を使う設定にすると難しい字も出るようになります。

まず表示可能かどうかについて。

PC上で文字が表示されるには次の3つが必要です。
・Windows自体の対応
・ソフトの対応
・フォントの対応

順に見ていきます。
・Windows自体の対応
これはWindows2000からすでにJIS第3第4水準の文字(を含むUnicode1面以上)に対応済みです。(ただし設定不要になったのはXPから)
No1さんの示したサイトに「現在のWindowsでは面02を利用することは不可能であり」とありますが、これはWindowsでなくソフトやフォントの対応のことを言っているのでしょう。誤解を招く書き方です。
・ソ...続きを読む

QPHP+Postgres 「髙」が文字化け

DB上に格納した文字列を取得し、PHPで出力すると、
「髙」(はしごだか)等、一部の文字が「□・」のような見た目に化けてしまいます。

環境は以下です。
Linux(CentOS 5)
PHP 5.1.6
Apache 2.2.3
PostgreSQL 8.4.3

文字コードは以下です。
Postgres:EUC-JP
PHPソース:EUC
php.ini の[mbstring]はコメントのまま変更していません。

文字コードの変換を試してみたのですが、「髙」としては出力できませんでした。
Windows上では「CP51932」に変換すると正常に出力できましたが、Linux上ではやはり駄目でした。

mb_language("uni");
mb_internal_encoding("euc-jp");
mb_http_input("auto");
mb_http_output("euc-jp");

$str = "髙橋";
print(mb_convert_encoding($str, "EUCJP-win"));
print(mb_convert_encoding($str, "EUCJP-win","EUC-JP"));
print(mb_convert_encoding($str, "SJIS"));
print(mb_convert_encoding($str, "SJIS","EUC-JP"));
print(mb_convert_encoding($str, "SJIS-win"));
print(mb_convert_encoding($str, "SJIS-win","EUC-JP"));
print(mb_convert_encoding($str, "UTF-8"));
print(mb_convert_encoding($str, "UTF-8","EUC-JP"));
print(mb_convert_encoding($str, "EUC","SJIS"));
print(mb_convert_encoding($str, "Unicode"));
print(mb_convert_encoding($str, "Unicode","EUC-JP"));
print(mb_convert_encoding($str, "UTF-8", "sjis-win"));
print(mb_convert_encoding($str, "CP51932"));
print(mb_convert_encoding($str, "MS932"));
print(mb_convert_encoding($str, "MS932","EUC-JP"));
print(mb_convert_encoding($str, "UTF-8","EUCJP-win"));
print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win" ), "UTF-8","EUCJP-win"));
print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win","EUC-JP"), "UTF-8","EUCJP-win"));
print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "UTF-8","SJIS-win"));
print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "UTF-8","SJIS-win"));
print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "EUCJP-win","SJIS-win"));
print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "EUCJP-win","SJIS-win"));

http://blog.livedoor.jp/loopus/archives/50160285.html
上記サイトによると、解決法は「EUC-JPで出力しないこと」という事でしたが、
文字コードを変換して出力できるような事を書いているサイトもあり、結論が出せずにいます。

ソースを書き換えるのは避けたいのですが、いい方法がありましたらご教示ください。

DB上に格納した文字列を取得し、PHPで出力すると、
「髙」(はしごだか)等、一部の文字が「□・」のような見た目に化けてしまいます。

環境は以下です。
Linux(CentOS 5)
PHP 5.1.6
Apache 2.2.3
PostgreSQL 8.4.3

文字コードは以下です。
Postgres:EUC-JP
PHPソース:EUC
php.ini の[mbstring]はコメントのまま変更していません。

文字コードの変換を試してみたのですが、「髙」としては出力できませんでした。
Windows上では「CP51932」に変換すると正常に出力できましたが、Linux上ではやはり駄目でした。
...続きを読む

Aベストアンサー

>EUC-JPで統一したのにこんな問題があったので・・。

EUC-JPで統一したのであれば、EUC-JPで扱えない文字を格納するのはやめましょう。eucJP-winというのもありますがPostgreSQLはeucJP-ms(NEC選定IBM拡張文字が存在しない)です。

http://msyk.at.webry.info/200511/article_2.html
http://ja.wikipedia.org/wiki/EUC-JP

というか今どき「文字コードを統一」するならutf-8以外の選択肢はないと思うのですが・・・


>他の文字コードにする場合ですが、PHPのソースと、データの文字コードを
>変更するのは簡単なのでしょうか?

PostgreSQLはあまり扱ったことがないのですが、基本的にはソースはテキスト処理系のソフトで一括変換、データベースもエクスポートしてからテーブル設定変更(というか削除して再作成)後にインポートという手順になります。

Qハシゴの「高」が「?」に置き換わってしまいます。

環境はxp、apache2、php5、Postgresql8.2です。
1台のPCをサーバ&クライアントにしています。
ただ今PHPとPostgresqlの勉強をしています。

文字化けをしてしまい困っています。

Excelデータからcsvに落として、
それをpostgresのテーブルに書き込みました。
ここまでは上手く行きました。

ところが、良く確認してみると
ハシゴの「髙」(高)や「﨑」(崎)「祥」などの文字が
「?」に置き換わってしまいます。

これをPHPで表示されてても同じです。

ご教示して頂けたら幸いです。

Aベストアンサー

ぽすぐれ ML過去ログ
http://ml.postgresql.jp/pipermail/pgsql-jp/2005-April/018754.html

EUCであればこれがビンゴかな。
EUCにも二種類あり、それぞれ特殊文字の扱いが違います。
// PostgreSQLの文字コードはeucJP-openなんですね・・・
// 当然といえば当然だが・・・
MLログにもあるように諦めるしかない気がします。

解決策としては「EUC-JPを使わない」となります。
PostgreSQLの内部コードをsjisにするか、
CSVファイルをUTF-8に変換しPostgreSQLの内部コードをUTF-8に変えた上で入れ込むしか策はないかも。

Q「以降」ってその日も含めますか

10以上だったら10も含める。10未満だったら10は含めない。では10以降は10を含めるのでしょうか?含めないのでしょうか?例えば10日以降にお越しくださいという文があるとします。これは10日も含めるのか、もしくは11日目からのどちらをさしているんでしょうか?自分は10日も含めると思い、今までずっとそのような意味で使ってきましたが実際はどうなんでしょうか?辞書を引いてものってないので疑問に思ってしまいました。

Aベストアンサー

「以」がつけば、以上でも以降でもその時も含みます。

しかし!間違えている人もいるので、きちんと確認したほうがいいです。これって小学校の時に習い以後の教育で多々使われているんすが、小学校以後の勉強をちゃんとしていない人がそのまま勘違いしている場合があります。あ、今の「以後」も当然小学校の時のことも含まれています。

私もにた様な経験があります。美容師さんに「木曜以降でしたらいつでも」といわれたので、じゃあ木曜に。といったら「だから、木曜以降って!聞いてました?木曜は駄目なんですよぉ(怒)。と言われたことがあります。しつこく言いますが、念のため、確認したほうがいいですよ。

「以上以下」と「以外」の説明について他の方が質問していたので、ご覧ください。
http://oshiete1.goo.ne.jp/kotaeru.php3?qid=643134


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報