前回の質問(4つほど前の)の続きですが、
8859-1が日本語を扱うことができるという勘違いは、
サーブレットで日本語のリクエストパラメータを使用する際の、
次のようなコードに起因してます。

String param =
new String(request.getParameter("test")).getBytes("8859_1"),
"JISAutoDetect");

ここで、request.getParameter("test") から返ってくる String は
8859-1エンコーディングされたものだと単純に考えていたのですが、
今回、あらためてこれについて考えてみました。

request.getParameter("test").getBytes("8859_1") で、
ブラウザのエンコーディングを用いた、パラメータを表現するバイト列が
ちゃんと取得できています。

では、request.getParameter("test") の結果返ってくる String は
ブラウザのエンコードでパラメータを表現するバイト列を用い、
値はそのままで、エンコード名だけを8859-1として構築されたもの、
になると思うのですが、
そういう認識で正しいのでしょうか。
また、それで正しいのなら、それと同じことを自分で行うには
どうすればよいのでしょうか。


とても気になります。
もしわかる方がいらっしゃったら、是非回答お願いします。

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

A 回答 (4件)

Unicodeと8859-1の対応表を見つけることができました。


参考URLを見て下さい。1バイトで表現できるすべてのコードについて
対応づけがされていますので、8859-1からUnicodeへの変換は常に
1対1にできます。コードも、8ビットを16ビットに拡張しただけで、
値としては同じものです。
Harryさんの元のご質問は、こういう状態になっているかどうかを
確認したかったのではないでしょうか。

少し補足しておく必要がありそうですね。
Stringは常にUnicodeで表現されます。一つの文字は常に固有のコード
で表され、同じコードでも解釈によって別の文字になるということが
ありません。つまり、「エンコード」という概念の入り込む余地が
無いのです。
String str1 = new String(b, "8859_1");
は、8859-1でエンコーディングされた文字列ではありません。
バイト列bを8859-1というエンコーディングによって解釈された
文字列です。気をつけておかなくてはならないのは、任意のバイト列は
任意のエンコーディングによって解釈できるというものではないと
いうことです。例えば0x80というコード1バイトだけのデータは、
SJISでは解釈のしようがありません。つまり、Stringに変換することが
できないわけです。Big5等の他のエンコーディングを介在させたときに
元の文字列に戻らなかったというのはそのためだと思います。
8859-1の場合は、1バイトのコードをすべて1文字として解釈できます
から、データの欠落が起きなかったわけです。

前回の回答で未定義部分があると書いたのは不十分な情報でした。
お詫びします。ただ、元々のISOによる規格を私は確認できていませんし、
Unicode Consortiumによる参考URLでも、いくつかのコントロールコード
として対応づけられている部分が含まれています。これらは非表示文字
として扱われますので、Harryさんの試行で"?"と表示されたのはその
ためだと思われます。次のようなやり方で1文字ずつコードの内容を
確認できると思います。
 for (int i=0 ; i<str1.length ; i++)
  System.out.print(" "+Integer.toHexString((int)str1.charAt(i)));
 System.out.println();

なお、前回の回答で「たまたま」という表現を使ったのは、「たまたま
Harryさんのプログラムでは」という意味ではなく、「たまたまサン・
マイクロシステムズ社等による現在のJavaの実装では」という意味で
使ったつもりでした。規格と実装が一致しているとは限らないと警告した
つもりでしたが、Unicode Consortiumによる対応表が見つかりましたので、
今回の件については、これは無視して下さい。
    • good
    • 0
この回答へのお礼

おはようございます。URL見ました。

>Harryさんの元のご質問は、こういう状態になっているかどうかを
>確認したかったのではないでしょうか。

「確認」という言葉を使えるほど、
こういう状態であることを予測してませんでした。
String型が8859-1も内部的な文字表現手段として利用してるのではないか、
という方向にばかり考えが向いていたので・・・
そうではなく、そもそも8859-1がUnicodeのサブセットのようなコード構成
になっていたのですね。

あるバイト列を8859-1エンコードで解釈した結果、「?」と表示されてしまう
未定義(と思っていた)部分は、それがUnicodeのコードに変換されるときに、
すべて、同一のコードにマッピングされて、復元不可能になってしまうのでは
ないか、
という疑問があったのですが、これも、これらが未定義ではなく制御文字、
しかもやはり1対1対応、ということで氷解しました。

とてもすっきりしました。
本当にどうもありがとうございます。


ところで、URLの完全一対一の対応表を見て、
ちょっとこれらの文字コードの成り立ちに興味が湧いてきました。
この辺もうすこし自分で調べてみようと思います。

お礼日時:2002/03/26 10:31

ご免なさい。

参考URLを忘れていました。

参考URL:http://www.unicode.org/Public/MAPPINGS/ISO8859/8 …
    • good
    • 0

SJISは文字を1~2バイトのコードで表します。

したがって、UnicodeのString
型に変換すると、コードに応じて1バイトが1文字になったり2バイトが1文字に
なったりします。一方8859-1は常に1文字を1バイトで表しますから、String型
に変換しても、そのバイト数に応じた文字数になります。
したがって、
byte[] b = "あいうえお".getBytes("SJIS");
のbは10バイトで5文字を表すコードになります。ところが、
String str1 = new String(b, "8859_1");
とした場合のstr1は、元の"あいうえお"ではなく、10文字の文字列となります。
String str2 = new String(str1.getBytes("8859_1"), "SJIS");
では10バイトのコードを介してもとの"あいうえお"を復元していることになります。

例えばSJISの"あ"が8859-1では別の2文字を表し、それをSJISに戻すとまた"あ"に
なる・・・ということだと思うのですが、実際のところ、私が参照したコード表では、
SJISで表された"あいうえお"にはISO-8859-1には定義されていないコードが含まれる
ことになっていますので、上記の変換ができたのは、たまたま現在の実装がそうなって
いただけのことかもしれません。いずれにせよ、一つのエンコーディングで処理
されたバイト列をそのまま他のエンコーディングで解釈するというのは、かなり危険な
ものと言え、できれば避けるべきだと思います。

この回答への補足

一部訂正します。

文字化けの問題はないです。
あれは、Propertiesクラスがわざわざ内部でエスケープ処理を
してくれているのが裏目にでてるだけのようです。

補足日時:2002/03/25 13:34
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

さっきの質問補足で書いたコードでは省きましたが、
str1 の内容も、もちろん出力して確認はしていました。
大部分が、「?」だったので、それが、ranxさんのおっしゃっている
定義されていないコードなのだと思います。

回答を読ませてもらいましたが疑問はまだ消えません。
もしString型が内部でUnicodeを間にかませてしまうと、
『 ???¢?????¨ 』という8859-1エンコードの文字列(str1)が
Unicodeに変換された時点でバイトデータは破壊されてしまうと
思うんです。8859-1でないエンコードを使った場合、先のコードと
同様の変換ができないというのも腑に落ちません。

コンストラクタ String(byte[] bytes, String encode) が
バイト列を指定のエンコードでエンコーディングされたものとして理解する
だけなら、指定エンコードの種類を問わず、先のコードは必ず元の
文字列を復元できるはずです。内部でUnicodeに変換されたらもちろん
バイトデータは破壊されますが、8859_1 の場合、実際の動作を見る限り
それがあてはまりません。


先のコードで正しい変換ができたのは、
決して"たまたま"ではないと思います。
なぜなら、質問中にふれたサーブレットのコードも、Propertiesクラス利用
の際も同様の処理を行っているからです。
でも危険なものであるという点は私も同じ意見です。
実際、質問No,235091 のような文字化けの問題などがあるわけですから。
(このNo,235091 の質問の意味が最近やっとわかりました。)

お礼日時:2002/03/25 13:23

> では、request.getParameter("test") の結果返ってくる String は


> ブラウザのエンコードでパラメータを表現するバイト列を用い、
> 値はそのままで、エンコード名だけを8859-1として構築されたもの、
> になると思うのですが、
> そういう認識で正しいのでしょうか。

質問の意味がよく分からないのですが、String型はつねにUnicodeで表現
されますから、バイト列そのままということはないですよね。もっとも、
0x0020~0x007eの分については、ASCIIそのままですから、そういう意味で
あれば値はそのままとも言えます。もちろん、漢字のコードなどが入り
込んでいればそういうわけにはいきませんし、円通貨記号のように、日本で
通常ASCIIとして扱っているものでも8859-1とは異なるものもありますね。

というわけで、ご質問の文章、何だかおかしいという感じですが、よく
分からないので、明確にして頂けると回答しやすいと思います。
    • good
    • 0
この回答へのお礼

レスありがとうございます。

私は、自分の上記の認識であってるという自信がありません。
もし正しくないのであれば、つまるところ、質問は、
String#getBytes("8859_1") の結果、日本語が返ってくるというのは
一体どういうことか、ということになります。

byte[] b = "あいうえお".getBytes("SJIS");
String str1 = new String(b, "8859_1");
String str2 = new String(str1.getBytes("8859_1"), "SJIS");
System.out.println(str2);

このコードが、正しく"あいうえお"を出力するのは確認しました。
そこで、二行目の str1 が、バイト列 b の元の値と、現在のエンコードが
8859_1 である、という情報とを両方保持してなければ、これらの
一連の変換の後、もとの文字列が復元できることが説明できない、
と思ったのが、質問で書いた"認識"の詳しい内容です。


ところで、ranxさんのレスのString型は常にUnicode...のところを読んで、
はっ、としました。言われてみればそうだった、と思ったんですが、
それを考えると、上のコードが元の文字列を出力するのが何故なのか、
全くわからなくなりました。
で、色々試してると、上のコードの 8859_1 の部分を二箇所とも BIG5 とか
別のエンコードに変えると、うまく変換できなくなることに気づきました。

それで勝手な推測なんですが、
String型は文字列表現にUnicodeだけでなく、8859_1も
利用できる、ということはないですか。

お礼日時:2002/03/25 11:47

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

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

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

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

QHD内のDVD-VideoをハードウェアエンコードでMpeg-4もしくはWMV形式へ変換

現在
HD内に保存してあるDVD-VideoをMpeg-4もしくはWMV形式へ変換するときは、
「InterVideo DVD Copy Platinum」http://www.intervideo.co.jp/products/idc4p/overview.html
と言うソフトウェアを使いソフトウェアエンコードを行っています、がエンコードにかかる時間を減らすためにハードウェアエンコードへ切り替えようと思い、Mpeg4やWMVへ変換できる、エンコードボードを探したところ
株式会社NEXXの「NXCD-750R」
というのが見つかりましたが、
http://www.watch.impress.co.jp/av/docs/20040217/nexx1.htm
付属のソフトではHD内に保存してあるDVD-Videoを
一発で変換とう言うわけにはならなそうでした。

と言うわけで
HD内のDVD-Videoを複雑な過程を踏まずMpeg-4もしくはWMV形式へエンコードできるソフトに対応した(添付してある)
ハードウェアエンコードボードがあれば教えてください

または、同等の結果が得られる方法をがあれば教えてください

現在
HD内に保存してあるDVD-VideoをMpeg-4もしくはWMV形式へ変換するときは、
「InterVideo DVD Copy Platinum」http://www.intervideo.co.jp/products/idc4p/overview.html
と言うソフトウェアを使いソフトウェアエンコードを行っています、がエンコードにかかる時間を減らすためにハードウェアエンコードへ切り替えようと思い、Mpeg4やWMVへ変換できる、エンコードボードを探したところ
株式会社NEXXの「NXCD-750R」
というのが見つかりましたが、
http://www.watch.impress.co.jp/av/docs/20040217/nex...続きを読む

Aベストアンサー

ハードウェアエンコードチップは、基本的にNTSCの信号を
MPEG4等へ変換するものですから、普通はHDD上の動画は
対象となりません。

強いて言えば、再生してビデオ出力に流して
それを再度ハードウェアエンコードカードに…
という方法で、つまり動画時間=圧縮時間。
言い替えれば、ハードウェアエンコードチップの性能は
この線にあると考えて間違いありません。

それに対してPC内でのMPEG2からMPEG4への変換は
トランスコード技術によりますから、作業量として考えれば
フルにエンコードするより小さい作業です。
それに速いCPUを用いるのが最良と考えられます。


なお、Web上の比較情報によると
InterVideo DVD Copyよりも、トランスコードが
若干速いアプリケーションもあるようです。

ちなみに、うちはHDDレコーダーによるMPEG2を
Socket370の非力ゆえ、最大3台4CPU体制でMPEG4化しています。
Windows用市販ソフトだとソフト代もあれですが
Linux用の無償のソフトなので無問題 :-)

ハードウェアエンコードチップは、基本的にNTSCの信号を
MPEG4等へ変換するものですから、普通はHDD上の動画は
対象となりません。

強いて言えば、再生してビデオ出力に流して
それを再度ハードウェアエンコードカードに…
という方法で、つまり動画時間=圧縮時間。
言い替えれば、ハードウェアエンコードチップの性能は
この線にあると考えて間違いありません。

それに対してPC内でのMPEG2からMPEG4への変換は
トランスコード技術によりますから、作業量として考えれば
フルにエンコードするより小...続きを読む

Qrequest.getParameter()

以下のような複数選択可能なメニューを用意しました。

<form action=...>
<select name="opt" size=1 multiple>
<option value>first
<option value>second
<option value>third
</select><p>
<input type="submit">

firstとsecondを選択してボタンを押した時に、
servletのプログラムの中で、
String option=request.getParameter("opt");
と実行したら、二つのオプション(first,second)を取ってきてくれるんですか?
それとも、配列で取得しないとだめなんですか?

Aベストアンサー

参考URLに getParameter() メソッドの説明のページを紹介しておきます。
そこから一分を引用すると、

> If you use this method with a multivalued parameter, the value returned is equal to the first value in the array returned by getParameterValues.

と、言うことですので、そういう場合には、getParameterValues() メソッドを使いましょう。
多分、以下のことが質問に書かれていますから、分かっているのだと思いますが。

> それとも、配列で取得しないとだめなんですか?

参考URL:http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html#getParameter(java.lang.String)

Q音楽圧縮形式の変換。WMPでは再エンコードは出来ないのか。

WMP(Windows Media Player)で再生できるファイルをWMP内で再エンコードすることは可能なのでしょうか。
具体的な例をあげるなら、iTunesでは
『 詳細 → 選択項目を■■(変換形式)に変換する 』
と出来、再エンコードが可能です。
今回自分が変換したいファイルはWAVファイルなのですが、見た目はWAVで中身はogg形式らしく、コーデックを入れない状態では主要のプレイヤーでは再生不可。
http://www.vorbis.com/files/1.0/tobias/OggDS0995.exe か、
http://kitsunezaka.at.infoseek.co.jp/archive/vorbisacm_20020708.zip
を入れたところ、再生は可能になったのですが、その後の変換を何ですればいいのかわかりません。
一般的に、コーデックを入れてWMPで再生出来るようになった後、どのようにすれば別形式に変換出来るのでしょうか。
初めはWMPで出来ると思ったのですが……。どうも見つからず……。
長年MACを使ってるもんで、如何せんWindowsが使えきれてないのが痛いところです。

WMP(Windows Media Player)で再生できるファイルをWMP内で再エンコードすることは可能なのでしょうか。
具体的な例をあげるなら、iTunesでは
『 詳細 → 選択項目を■■(変換形式)に変換する 』
と出来、再エンコードが可能です。
今回自分が変換したいファイルはWAVファイルなのですが、見た目はWAVで中身はogg形式らしく、コーデックを入れない状態では主要のプレイヤーでは再生不可。
http://www.vorbis.com/files/1.0/tobias/OggDS0995.exe か、
http://kitsunezaka.at.infoseek.co.jp/archive/vorb...続きを読む

Aベストアンサー

Windows MediaPlayerではCDから取り込むときにしかエンコードは出来なかったと思います。
変換するには別のアプリケーションでするしかありませんね。

以下、以前私が回答した他の質問からの引用ですが…
SoundPlayer Lilithというソフトがあります。

使い方
(1)変換をするときはウィンドウの上で右クリック
(2)ファイルの変換→変換したい曲をドラッグ&ドロップ
(3)参照で出力先を指定
(4)設定で変換したい形式を選ぶ
(5)↑の上で右クリックするとビットレートやCBR(固定ビットレート)VBR(可変ビットレート)を指定できます。
(6)OKをクリックして開始をクリックすれば変換開始です。

参考URL:http://www.vector.co.jp/soft/win95/art/se174814.html

QString a = "a"; と String b = new String ("b"); の違い

String a = "a";
String b = new String ("b");

お伺いしたいのですが、
b は String のインスタンスを作ってると思いますが、
a はどんなことをしてるのでしょうか?

Aベストアンサー

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その初期化に使った無名のStringインスタンスの3つがメモリ上に存在することになります。
if(b1 != b2) System.out.print("b1とは違うインスタンス");
の結果でもわかると思います。

したがって、
String b = new String ("b"); というのは、Integerに例えると
Integer i = new Integer(new Integer(1)); という処理を
していることになり、ひとつ無駄なインスタンス生成となります。

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その...続きを読む

Qpostやgetで得られたパラメタのエンコードを変換したい

Phpの内部エンコードとhtmlの表示文字コードが異なる場合、
そのformから送られる変数をphpで受けた場合、当然文字化けしてしまいます。

これを回避したいので、
$_POST や $_GET の文字列のエンコードを変換したいのですが(変数名の予想はできない)
受ける変数の文字コードを指定する方法が分かりません。

ご存知の方はご教授お願いいたします。

Aベストアンサー

>できれば$_POST自体の文字コードを変更したいのです

php.ini に自動変換指定があったけど
php4.3以降で mbstring.encoding_translation を on のときのみ、HTTP入力文字エンコーディングは、自動的に mbstring.internal_encodingに変換されます。とのこと。

しかし、mb_convert_encoding()も同じだけど、文字列が短いと誤変換の確率が高くなります。
で、この自動変換を行ってしまうと、誤変換後のデータしか得られないので、
誤変換対策(同時に送られてきた他の文字列と連結して変換するとか、他のデータに文字エンコーディング指定を含めてそれを参考に元文字エンコーディングを指定するとか)が取りにくくなってしまいます。

mbstring.http_input の文字エンコーディングが限定できるならば、自動変換もかなり有効かとも思いますけど、誤変換の可能性は十分考慮して使ってください。

QString <=> byte配列 の際のエンコード

なんで、

String str = "あいうえお";
byte[] temp = str.getBytes("8859_1");
String str2 = new String(temp, "8859_1");
System.out.println(str2);

このコードが ????? を出力するかわかる方、おしえてください。

Aベストアンサー

Harry_ さんの回答履歴を見る限り、あなたはこの質問の答えがわかっていて当然だと思うのですが……


8859_1 は、欧文用のエンコードですよね。半角英数字などの欧文用文字には対応していますが、日本語のひらがなや漢字には対応していません。ですから、日本語を 8859_1 エンコードで表そうとしても不可能です。

したがって、コードの2行目で getBytes メソッドの返すバイト配列は、この時点で
0x3f 0x3f 0x3f 0x3f 0x3f (?????)
になっています。

もちろん、3行目の 8859_1 エンコードによるバイト配列から Unicode の文字列に変換する作業はうまくいっています。ただし、引数のバイト配列の中身は、「?????」なのです。

Q文字変換のエンコード

HPを編集する際に
サーバーにあるファイルを
編集しようとすると
西ヨーロッパ言語になってしまいます
以前は エンコードせずに
普通にファイル編集できたのですが
モバイル用のサイトの編集で
小文字を書いた編集が
すべて文字化けしてしまい
編集できなくなってしまいました
どうしたらよいでしょうか

サイトのサポートは
バグをのぞいては
サポートは答えられないとのこと
FTPを利用したファイル管理でない
タイプのHPなので
どうしていいかわからないです
新たにHPを新しくしてもまた
同じようにエンコードしないと
だめなのはこちらの環境が悪いせいなのでしょうか

Aベストアンサー

HPにメタタグを挿入すればいいと思います。
メタタの一行目に
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
文字エンコードを「Shift_JIS」に指定すればいいです。

QBASE64でエンコードしてPOSTしたパラメータが、Javaで取得できません。原因がわかりません。

ファイルデータをサーバにアップロードするために、
BASE64でエンコードしてPOSTしています。

1.4MBぐらいまではrequestをサーバ側で取得でき保存できるのですが、
1.4MBぐらいを超えると、requestが取得できず(?)例外となります。

requestが取得できていないと判断したのは、
eclipseでデバックして、リクエストの中身を参照して判断しました。
Apacheのログでは正しくApacheで取得しているであろう、
ファイルサイズが出力されています。

何が起因しているのかまったく分かりません。
何か解決方法のヒントでも教えていただけませんでしょうか。

ローカルのWindowsでも同現象になります。

Apache:2.0
Tomcat:6.0
DI(Seasar):2.4.28

Aベストアンサー

ちょっとどんな例外かわからないのであれですがー。

単純に、TomcatのPOSTサイズの上限を設定してないってことはないでしょうかー。server.xmlの<Connector>に、maxPostSize="バイト数"ってやって上限をでかくしてやったら送れないですかねー。

Q携帯動画変換君で2パスエンコード設定が書けない

携帯動画変換君で、H.264の2パス(Nパス)エンコードがしたいのですが、コマンドが苦手な為、書式がかけません

Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -bitexact -qmin 1 -qmax 31 -vcodec h264 -mbd 2 -4mv -trell -aic -an -vcodec h264 -fixaspect -s 400x240 -r 29.970 -b 1000 "<%TemporaryFile%>_m.mp4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -f wav -ar 44100 -acodec pcm_s16le -ac 2 "<%TemporaryFile%>.wav""
Command2=""<%AppPath%>\cores\neroAacEnc" -br 48000 -he2 -if "<%TemporaryFile%>.wav" -of "<%TemporaryFile%>_s.mp4""
Command3=""<%AppPath%>\cores\MP4Box" -add "<%TemporaryFile%>_m.mp4" -add "<%TemporaryFile%>_s.mp4" "<%OutputFile%>.3gp""
Command4="cmd /c "del "<%TemporaryFile%>*.*"

いろいろなものを参考にして、1パス分までは書けました(↑上)
どうしても2パス(Nパス)目の処理が書けなくて悪戦苦闘しています
どうかご教授ください

携帯動画変換君で、H.264の2パス(Nパス)エンコードがしたいのですが、コマンドが苦手な為、書式がかけません

Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -bitexact -qmin 1 -qmax 31 -vcodec h264 -mbd 2 -4mv -trell -aic -an -vcodec h264 -fixaspect -s 400x240 -r 29.970 -b 1000 "<%TemporaryFile%>_m.mp4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -f wav -ar 44100 -acodec pcm_s16le -ac 2 "<%TemporaryFile%>.wav""
Command2=""<%AppPath%>\cores\neroA...続きを読む

Aベストアンサー

-pass *(0/1) -passlogfile "2pass-log"
と書き足せばいいんじゃないでしょうか。
上記の例ですと、映像部分のみの改変として
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 1 -passlogfile "2pass-log" -bitexact -qmin 1 -qmax 31 -vcodec h264 -mbd 2 -4mv -trell -aic -an -vcodec h264 -fixaspect -s 400x240 -r 29.970 -b 1000 "<%TemporaryFile%>_m.mp4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 2 -passlogfile "2pass-log" -bitexact -qmin 1 -qmax 31 -vcodec h264 -mbd 2 -4mv -trell -aic -an -vcodec h264 -fixaspect -s 400x240 -r 29.970 -b 1000 "<%TemporaryFile%>_m.mp4""
Command2="cmd /c "del "2pass-log*.*"""
みたいな感じでよろしいんじゃないかと。
確認はしてませんので保障はできませんが、参考まで。

-pass *(0/1) -passlogfile "2pass-log"
と書き足せばいいんじゃないでしょうか。
上記の例ですと、映像部分のみの改変として
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 1 -passlogfile "2pass-log" -bitexact -qmin 1 -qmax 31 -vcodec h264 -mbd 2 -4mv -trell -aic -an -vcodec h264 -fixaspect -s 400x240 -r 29.970 -b 1000 "<%TemporaryFile%>_m.mp4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 2 -passlogfile "2pass-log" -bitexact -qmin 1 -qm...続きを読む

QMap Hash = new Hash

Map<String, String> Hash = new HashMap<String, String>();

このjavaのハッシュマップの初期化の方法を教えてください。

Aベストアンサー

2回目?
1回目と同じですよ。

Map<String, String> Hash = new HashMap<String, String>(); //1回目
Hash = new HashMap<String, String>(); //2回目
Hash = new HashMap<String, String>(); //3回目
Hash = new HashMap<String, String>(); //4回目
//このあとも好きなだけどうぞ・・

なにか質問の意味を勘違いしてますかね?


人気Q&Aランキング

おすすめ情報