Google グループは Usenet の新規の投稿と購読のサポートを終了しました。過去のコンテンツは引き続き閲覧できます。
Dismiss

Shift-JIS →Unicodeの16 ビットにエンコード変換

閲覧: 1 回
最初の未読メッセージにスキップ

IIJIMA Hiromitsu

未読、
2004/03/31 18:02:062004/03/31
To:
いいじまです。

fj.kanji と fj.news.reader を足します。fj.net.watch もとりあえずそのまま。

> 日本語を Unicodeの16ビット に変換するツールをご存じないでしょうか?

環境くらい書きましょうよ。
元記事は Datura for Windows で投稿されていますので、
Windows ということでよろしいですか?

> Kaz がよく文字化け投稿してますが、「おい、」 のよう
> に変換するツールを捜しています。

この変換なら、Unicode 対応のテキストエディタのマクロですぐにできます。

とはいえ、Google の文字化け投稿は JIS コード中の "、&、<、> のバイトを
&quot; などに書き換えてしまうので、ちょっと試してはみましたが回復困難
でした。

Google の投稿でも文字化けしていないものもあるので、現象の再現条件を調べ
るのが先決でしょう。

========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp

───【宣伝/ADVERTISEMENT】──────────────────────
Emacs カスタマイズのメールマガジン、不定期配信中。
【第27回】C-x = に不満では? 文字のJIS/EUC/SJISコードを表示するelisp。
http://www.ht.sakura.ne.jp/~delmonta/emacs/
────────────────────────────────────

IIJIMA Hiromitsu

未読、
2004/04/01 11:16:472004/04/01
To:
いいじまです。

> 私が何をしたかったかというと、ロシア鯖(キリル言語)に文字化けなしで
> 日本語を表示したかったのです。
> <meta タグも書き換えられるし、.htaccess に文字コード指定してアップ
> しましたが、まったく効かなかったのです。

そういう意図でしたか。
とすると、うちで公開している JavaScript でもできますよ。
http://www.ht.sakura.ne.jp/~delmonta/koreanisch/buchstaben-zu-nummer.html

ただこれは、アドレスからも分かるとおり、日本語のファイルの中に少量のハン
グルを書き込むことを前提にしたものですので、全文を &#nnnnn; にエンコード
するような用途には向かないと思います。

近々、別のプロジェクトの一環として秀丸マクロ版を出します。

ku...@gssm.otsuka.tsukuba.ac.jp

未読、
2004/04/01 17:26:072004/04/01
To:
久野です。

delm...@ht.sakura.ne.jpさん:


> そういう意図でしたか。
> とすると、うちで公開している JavaScript でもできますよ。
> http://www.ht.sakura.ne.jp/~delmonta/koreanisch/buchstaben-zu-nummer.html

Javaなんかでも書いてみましたがこういうのでいいのかな。 久野
---
import java.io.*;

public class Test {
public static void main(String[] args) throws Exception {
Reader r = new InputStreamReader(
new FileInputStream(args[0]), "JISAutoDetect");
int ch;
while((ch = r.read()) >= 0)
if(ch < 256) {
System.out.print((char)ch);
} else {
System.out.print("&#");
System.out.print(ch);
System.out.print(';');
}
}
}

IIJIMA Hiromitsu

未読、
2004/04/02 8:55:562004/04/02
To:
いいじまです。

> int ch;
> while((ch = r.read()) >= 0)
> if(ch < 256) {
> System.out.print((char)ch);

Java は私はほとんど知らないんですが、U+8000 以上の入力があったときに、
(ch < 256) という判定をしてしまって大丈夫でしょうか?

とりあえず、( (ch&255)==ch ) ないし ( (ch&~255)==0 ) とするのが無難だと
思います。

#C 言語でも、
#typedef signed short wchar_t;
#なんていう処理系がありそうで恐い……ちなみに、glibc と FreeBSD は
#wchar_t は 32 ビット、Win32 は unsigned short です。

Yasushi Shinjo

未読、
2004/04/02 12:33:182004/04/02
To:
新城@筑波大学情報です。こんにちは。

日本語の文字化けを防ぐために Unicode 使うというのは、やめて
欲しいなあ。時々困るのが、JIS 文字集合でしかコピー&ペースト
できないようなプログラムです。一部 Unicode の文字が混じって
いて、それが含まれているがために、画面には表示できてもその別
のアプリケーションにはコピー&ペーストできない。Unicode なん
か避けて保存して欲しいのに。

In article <406b...@127.0.0.1>
v(*^。^*) <opliuytrewqkj...@usageport5.com> writes:
> 私が何をしたかったかというと、ロシア鯖(キリル言語)に文字化けなしで
> 日本語を表示したかったのです。
> で、Unicodeの16ビットを試してみたわけです。

Shift-JIS は、自動判定しにくいのでしょう。Shift-JIS ではなく
て、JIS にしたらどうですか。

JIS に最初から入っているロシア語の問題じゃないですよね。
0x2701 あたり。

> <meta タグも書き換えられるし、.htaccess に文字コード指定してアップ
> しましたが、まったく効かなかったのです。

ブラウザによっては、最初に飛んできたページのメタ情報をずっと
覚えている(後で書き換えても効かない)といのがあります。一度ブ
ラウザを終了してから、読み直すと有効になることがあります。

<meta> が効かないのは、ブラウザの問題じゃないかなあ。

.htaccess の設定が効かないのは、サーバで上書きを禁止している
からでしょう。サーバの管理者と相談して、そもそもの標準の文字
コードを日本語系にしてもらうという作戦も考えられます。

古い Apache の日本語化で、標準の文字コードを設定ファイルに書
いて、個々のページでの上書きできないという問題があったような
気がしました。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\

ku...@gssm.otsuka.tsukuba.ac.jp

未読、
2004/04/02 16:36:042004/04/02
To:
久野です。

delm...@ht.sakura.ne.jpさん:


> Java は私はほとんど知らないんですが、U+8000 以上の入力があったときに、
> (ch < 256) という判定をしてしまって大丈夫でしょうか?

Readerのread()が返す値は0~65535、ストリームの終りがきたとき
-1、と定められています。

> #C 言語でも、
> #typedef signed short wchar_t;
> #なんていう処理系がありそうで恐い……ちなみに、glibc と FreeBSD は
> #wchar_t は 32 ビット、Win32 は unsigned short です。

そういうことを悩まないのがJavaの助かる点だなあ。 久野

ku...@gssm.otsuka.tsukuba.ac.jp

未読、
2004/04/02 16:38:462004/04/02
To:
久野です。

私:


> Readerのread()が返す値は0~65535、ストリームの終りがきたとき
> -1、と定められています。

はっ! いつのまにかreaderの話題に… ^_^;; 久野

IIJIMA Hiromitsu

未読、
2004/04/03 4:06:532004/04/03
To:
いいじまです。完全に蛇足。

> > Java は私はほとんど知らないんですが、U+8000 以上の入力があったときに、
> > (ch < 256) という判定をしてしまって大丈夫でしょうか?
>
> Readerのread()が返す値は0~65535、ストリームの終りがきたとき
> -1、と定められています。

C の getc() と同じような仕様ですね。

で、元のコードを見てみると、


>>> while((ch = r.read()) >= 0)

と書いてあるので、read() が signed short を返すはずはないんでした。

========================================================================
飯嶋 浩光 / でるもんた・いいじま http://www.ht.sakura.ne.jp/~delmonta/
IIJIMA Hiromitsu, aka Delmonta mailto:delm...@ht.sakura.ne.jp

───【宣伝/ADVERTISEMENT】──────────────────────

新着メール 0 件