喫茶XRAYトップページ

[スレッド全体
]

[11331] 翻訳こんにゃく返信 削除
2017/8/17 (木) 10:40:56 おかぽん
▼ Mr.XRAYさん
> この方は,IE / FireFox では文字化けすると書いていました.
恥ずかしながら、この文字化けを翻訳するよい方法を知りません。

例えば、文字化け解決支援(http://ltside.com/enc/)で、翻訳後の文字を入力すると
latin-1 (ISO-8859-1) → UTF-8 なのかな?
・・・とは、思ったのですが、文字化けをコピペしてもHarryさんのように
きれいに翻訳できません。

Chromium と IE11 でも、微妙に結果が変わるので、ブラウザによって、
一部の文字を変換しているせいと思うのですが、
どうやって翻訳しているんでしょうか?

よいブラウザとか文字化け対策の組合せあれば、教えていただきたいのです。

まさか・・・Harryさん(及び、この掲示板の皆さん)は、エスパーいえ、
翻訳こんにゃくをお持ちなのでしょうか?(混乱

# 最近、子どものTV視聴のおかげで、ようやく新声優陣(もう10年前?)の声に
# 慣れてきたことに気がついたドラえもん。

[11332] Re:翻訳こんにゃく返信 削除
2017/8/17 (木) 13:08:05 Harry
こんにちは。翻訳家のHarryです。

▼ おかぽんさん
> どうやって翻訳しているんでしょうか?

すべては努力です!!

私は翻訳こんにゃくも持っておりませんし、ESP能力もわずかしかありません。
なので、バイナリエディタを見ながら 1byte、また1byteと心を込めて、
夜なべで翻訳をしております。

…というのはウソです。
あちらに投稿したソースですべてご理解いただけるかと思います。


> よいブラウザとか文字化け対策の組合せあれば、教えていただきたいのです。

本文字化けの根本的な原因が見当がつきませんので、分からないですぅ。

[11333] Re2:翻訳こんにゃく返信 削除
2017/8/17 (木) 14:49:42 Mr.XRAY
どうもです.

> 本文字化けの根本的な原因が見当がつきませんので、分からないですぅ。

知的欲求というのでしょうか.
どうな状態で書き込みすると文字化けするのか知りたいですね.
知ってどうすんだ,と言われても困るんですが.

昔 ATOK (エイトック) が,漢字変換の時にユニコードな文字も候補リスト
するため,そのまま入力したテキストを送ると文字化けというのがあったの
ですが...

今回質問された方に訊くのは,訊けたとしても,無理でしょうね.
あの書き込みの文章から推測する性格では.

知りたいな〜.


[11334] ちんたら節返信 削除
2017/8/17 (木) 15:23:01 Mr.XRAY
> 知りたいな〜.

これ書いて思い出しました.
たしか大元は早稲田大学の学生寮の「ちんたら節」だと思うんですが,
昔はカラオケなんかありませでした.
合宿や,山に逝った仲間をしのぶ会でみんなで歌ったことがあります.
多くの場合「ちんから まんだら 学校サボって」が多かったようです.

我々の場合は「ほんじゃら ほじゃらか」で始まりました.

ほんじゃら ほじゃらか 授業ささぼって 目白にきてみれば,
ドレメの姉ちゃんが横目でにらむ,
やりたいな やりたいな やりたい やりたい やりたいな
ドレメの姉ちゃんと勉強やりたいな

ほんじゃら ほじゃらか 授業ささぼって 新宿にきてみれば,
高看 (コウカン) の姉ちゃんが横目でにらむ,
さしたいな さしたいな さしたい さしたい さしたいな
高看の姉ちゃんと将棋をさしたいな


※ ドレメとは目白ドレスメーカ (ドレス ?) 学園
※ 高看は新宿高等看護学校

ほんじゃら ほじゃらか 授業ささぼって 代々木にきてみれば,
予備校の姉ちゃんが横目でにらむ,
入れたいな 入れたいな 入れたい 入れたい 入れたいな
予備校の姉ちゃんを大学に入れたいな

ほんじゃら ほじゃらか 授業ささぼって 原宿にきてみれば,
馬事苑の姉ちゃんが横目でにらむ,
乗りたいな 乗りたいな 乗りたい 乗りたい 乗りたいな
馬事苑の姉ちゃんとお馬に乗りたいな

ほんじゃら ほじゃらか 授業ささぼって 渋谷にきてみれば,
青学 (アオガク)の姉ちゃんが横目でにらむ,
乗せたいな 乗せたいな 乗せたい 乗せたい 乗せたいな
青学の姉ちゃんを車に乗せたいな


以下,えんえんと続く
おならの歌 (オッピョ節) というのもあましたね.
お粗末 !!
知りたいながどこの駅でとうのは忘れました.大崎あたりかな ?


[11335] 保存版オナラのうた返信 削除
2017/8/17 (木) 15:54:53 Mr.XRAY
> おならの歌 (オッピョ節) というのもあましたね.

喫茶XRAY のお客様のリクエストに応えまして.
オナラの歌です.


ひとつ,一人でするのを単独オナラと申します.
音も一つです..オッピョ.

ふたつ,二人でするのをアベックおならと申します.
音も二つです.オッピョ.
 
みっつ,みんなでするのを集団オナラと申します.
音が乱れます.オッピョ.

よっつ,酔っぱらってするのを酔いどれオナラと申します.
音が踊ります.オッピョ.

いつつ,いつもするのを通常オナラと申します.
音も普通です.オッピョ.

むっつ,無理してするのを強引オナラと申します.
音もスゴイです.オッピョ.

ななつ,並んでするのを並列オナラと申します.
音も並びます.オッピョ.

やっつ,やる時するのを催促オナラと申します.
時々身も出ます.オッピョ.

ここのつ,こらえてするのを隠密オナラと申します.
音も消えてます.オッピョ.

とおっ,とうとうでました 可愛いあの子のナラです.
音も可愛いです.オッピョ.おしまい.


[11346] Re3:翻訳こんにゃく返信 削除
2017/8/18 (金) 16:34:28 Harry
▼ Mr.XRAYさん
> どうな状態で書き込みすると文字化けするのか知りたいですね.
> 知ってどうすんだ,と言われても困るんですが.


私も知りたいです。
私は、あの書込者IDがめっちゃ怪しいと思ってます。
それによって掲示板CGIが自ら誤動作してるのではないかと。まったくの推測ですけど。

> 今回質問された方に訊くのは,訊けたとしても,無理でしょうね.
> あの書き込みの文章から推測する性格では.


Delphiの前途を憂う気持ちはとても共感します。
ですが、他環境と天秤にかけるほど追い詰められてはいません。趣味ユーザーなので!!

なお、マスターの歌シリーズについてのコメントは差し控えさせていただきます。


[11337] Re2:翻訳こんにゃく返信 削除
2017/8/18 (金) 08:35:36 おかぽん
▼ Harryさん
> すべては努力です!!
ガーン・・・・ポロリ(目から鱗が落ちる音)

> あちらに投稿したソースですべてご理解いただけるかと思います。
すばらしいです!
私、なければ作るの精神、すっかり忘れてしまったようです
(忘却したいことはいっぱいあるのに、忘れちゃいかんことを忘れる今日この頃)

で、さっそくコピペして・・・動かすと・・・ <少しは理解する努力しなさい(^^;)
・・・URLOpenBlockingStreamで、失敗する・・・。

googleさんにお尋ねしたところ、英語は読めませんので、はっきりわかりませんが
proxy環境では失敗するとか、しないとか。
# テスト中の環境は、proxy環境です

以前作ったダウンロードツールから、機能拝借したらできるかな。
という状況です。

曜日とか「書込者ID」から化けて、その人の投稿分だけ化けるなんて、すごい不思議。
名前部分に謎の制御文字とか入ってるんだろか。

[11338] Re3:翻訳こんにゃく返信 削除
2017/8/18 (金) 09:44:28 おかぽん
09_HTTP サーバからデータを取得 - ダウンロード
http://mrxray.on.coocan.jp/Delphi/plSamples/770_WinInetTest.htm#09

こちらのサンプルにある方法を使って読み取り(ダウンロード)したらできました。

MemoryStreamに読み込んで、AnsiString で読んで、Harryさんメソッド通して
FileStreamで書き込んでおしまい。


[11339] Re4:翻訳こんにゃく返信 削除
2017/8/18 (金) 09:54:01 Mr.XRAY
▼ おかぽんさん

> MemoryStreamに読み込んで、AnsiString で読んで、Harryさんメソッド通して
> FileStreamで書き込んでおしまい。


ゲッ !
おかぽんさん仕事早いですね.
私は Harry さんのコードコピペして保存しただけです.
おかぽんさんのおかげで手間が省けそうです.サンクスです.


[11343] Re5:翻訳こんにゃく返信 削除
2017/8/18 (金) 11:58:07 おかぽん
▼ Mr.XRAYさん
> おかぽんさん仕事早いですね.
仕事じゃないから早い・・・おっと、これ以上は言えない

せっかくなので Harryさん の UTF8MojibakeFix を某掲示板仕様に修正したので置いていきます。

各投稿間には、必ず横線(<HR> タグ)があるので、このタグがあれば、そこから
127バイト先読みして、文字化け対策が必要か確認しています(関数内関数doFixCheck)。
確認は、投稿日時が "(" + 曜日 であるため、"(" に続けて修正文字 $C2 があれば、
次の横線までの範囲を修正区間として処理。

これにより、正常な投稿の文字化けを回避します。

function UTF8MojibakeFix2(const aStr: AnsiString): AnsiString;
  //UTF8修正が必要であるか
  //127文字分先読みして、文字化けしているか調査する
  function doFixCheck(aPStr: PAnsiChar; aMax: Integer): Boolean;
  const
    MAX_SEARCH_SIZE        = 127;
  var
    fInnK, idx, nMax: Integer;
  begin
    Result := False;
    fInnK := 0;
    if aMax < MAX_SEARCH_SIZE then nMax := aMax else nMax := MAX_SEARCH_SIZE;
    for idx := 0 to nMax do begin
      case aPStr^ of
        #$28: fInnK := 1;        //(
        #$C2: begin
          if fInnK = 1 then begin
            Result := True;
            Break;
          end;
        end
        else fInnK := 0;
      end;
      Inc(aPStr);
    end;
  end;
var
  fInnState,
  fAddChar: Boolean;
  fHR, mlen, idx: Integer;
begin
  Result:='';

  fInnState := False;
  fHR := 0;

  mLen := Length(aStr);
  idx := 1;

  while idx <= mLen do begin
    fAddChar := True;
    case aStr[idx] of
      #$3C: fHR := 1;                                        //<
      #$3E: begin                                         //>
        if fHR = 3 then begin
          fHR := 0;
          fInnState := doFixCheck(@aStr[idx], mLen - idx);
        end;
      end;
      #$48: if fHR = 1 then Inc(fHR) else fHR := 0;        //H
      #$52: if fHR = 2 then Inc(fHR) else fHR := 0;        //R
      #$C2: if fInnState then fAddChar := False;
      #$C3: begin
        if fInnState then begin
          Inc(idx);
          //次の文字を変換
          Result := Result + AnsiChar(Byte(aStr[idx])+$40);
          fAddChar := False;
        end;
      end;
    else fHR := 0;
    end;

    if fAddChar then begin
      if aStr[idx] = #$0 then Result := Result + #$20
      else Result := Result + aStr[idx];
    end;
    Inc(idx);
  end;
end;

以下4質問が、華麗に翻訳されました。
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201609/16090004.txt
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201611/16110016.txt
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201704/17040002.txt
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201708/17080004.txt


[11344] Re6:翻訳こんにゃく返信 削除
2017/8/18 (金) 15:55:08 Mr.XRAY
> せっかくなので Harryさん の UTF8MojibakeFix を某掲示板仕様に修正したので置いていきます。

私は取り合えば Harry さんのコードをコピペしたのを
TEmbeddedWB に置き換えてみました.TWebBrowser だとスクリブエラーが発生したので.

http://mrxray.on.coocan.jp/Delphi/zip/plCnvCodepage4QA.zip

動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.


[11345] Re7:翻訳こんにゃく返信 削除
2017/8/18 (金) 16:14:01 Mr.XRAY
> http://mrxray.on.coocan.jp/Delphi/zip/plCnvCodepage4QA.zip

おかぽんさんのコードも追加させていただきました.
ボタンが 1 つ増えています.

もし応答なしの状態になったら,閉じて再度起動してみてください.


2017/08/23 追記
NavigateError 時の処理を Cancel することにより,
応答なしの状態を抑えるようにしてみました.



[11354] Re8:翻訳こんにゃく返信 削除
2017/8/23 (水) 15:03:44 Mr.XRAY
> もし応答なしの状態になったら,閉じて再度起動してみてください.

NavigateError 時の処理を Cancel することにより,
応答なしの状態を抑えるようにしてみました.


[11348] Re7:翻訳こんにゃく返信 削除
2017/8/18 (金) 16:41:21 Harry
▼ Mr.XRAYさん
> TEmbeddedWB に置き換えてみました.TWebBrowser だとスクリブエラーが発生したので.

その辺が(ミニマム版)のゆえんでした。
あいにく、某掲示板だと広告によってスクリプトエラー多発するんですよねー。
それと、ページが遷移してもロケーションバーが変化しないのは仕様です(笑)


[11349] Re8:翻訳こんにゃく返信 削除
2017/8/18 (金) 17:03:25 Mr.XRAY
▼ Harryさん

> その辺が(ミニマム版)のゆえんでした。
> あいにく、某掲示板だと広告によってスクリプトエラー多発するんですよねー。
> それと、ページが遷移してもロケーションバーが変化しないのは仕様です(笑)


UI 関係をちゃんとというか,考えると大変というか面倒ですからね.
解読できれば十分と思います.
これでコピペして解読する必要がなくなりました.
感謝です.


[11347] Re6:翻訳こんにゃく返信 削除
2017/8/18 (金) 16:39:07 Harry
▼ おかぽんさん
> すばらしいです!
> 私、なければ作るの精神、すっかり忘れてしまったようです


無ければ作る…そういうことを言っていただけてうれしいです。
そう、タネを明かせば単にUTF-8をデコードしてる(※ただし対象は1byte文字限定)
だけなんですけど、こんなもの、既製のライブラリ使用では難しいですよね、たぶん。

> ・・・URLOpenBlockingStreamで、失敗する・・・。
> proxy環境では失敗するとか、しないとか。


ありゃー、そんな罠があるんですか。残念。
でもまあ、もうお察しの通り、生HTMLを取得できればなんでもOKですので。
URLOpenBlockingStreamを採用したのは、AnsiStringに直接ぶち込める、シンプルな
コードを探し、試してみた結果です。
本質的にはAnsiStringさえ要らないですよね。自分の場合はスクリプトに放り込むときに
必要なのと、「Stringは足し算が出来てお得!」なのでバイナリは基本AnsiStringに
入れてしまいます(笑)


> せっかくなので Harryさん の UTF8MojibakeFix を某掲示板仕様に修正したので置いていきます。

早速、差し替えて使わせていただきました。おおおお、これは… 感動しました!!

★感動ポイント
 (1) 目の付け所がHR
 (2) たった一文字、関数名に 2 を追加するだけで機能アップする親切かつ互換性抜群の仕様
 (3) なんかぜんぜん違うコードになってるぅ〜(笑) 特にフラグの意味がまったく違うし!
 (4) こっそりDeleteNull関数も統合されてるぞ!?
 (5) case文の書き方が自分と同じだ!!

DeleteNull関数について。
私も投稿の際にやぼったいから統合しようかと思ったんですが、見送りました。
その理由は、UTF8MojibakeFix関数の処理内容が分かりにくくなる恐れがあったのと、
いかなる場合(例えば不正なUTF-8とか)でもNull文字を除去したかったためです。


[11342] Re3:翻訳こんにゃく返信 削除
2017/8/18 (金) 11:22:39 Mr.XRAY
▼ おかぽんさん

> 曜日とか「書込者ID」から化けて、その人の投稿分だけ化けるなんて、すごい不思議。
> 名前部分に謎の制御文字とか入ってるんだろか。


そんなですよね.不思議です.
特定の文字だけですと,1 バイト削除すると通常の文字になることはありました.

ほんじゃら ほじゃらか 仕事ささぼって 掲示板を見てみれば
誰かの書き込み 文字化けしているよ
知りたいな 知りたいな 知りたい 知りたい 知りたいな
掲示板の文字化け その訳知りたいな


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82