投稿者 魔界の仮面弁士  (社会人) 投稿日時 2012/3/5 12:40:08
> Shift_JIS とUTF-8、UTF-16 はバイト数が違うんですね。勉強になりました。

良く知られるのは Shift_JIS ですよね。
これは 半角=1バイト、全角=2バイトという考え方で、ほぼ間違いありません。
(シフトJIS の派生形には、半角2バイト文字を含むものもありますが、Windows では使われません)

一方、UTF-16 (あるいは UCS-2) は、「1 文字 = 2 バイト」固定となります。
これは Windows が内部的に利用している文字コードであり、.NET Framework の文字列も
内部的には、これで管理されています。コンピュータ的には比較的カウントしやすいですしね。

そして UTF-8 は、大雑把にいえば ASCII = 1バイト、CJK 漢字(日中韓の文字) = 3 バイト、
ギリシャやロシア語などを 2 バイトで表現する文字コードです。HTML やメールなど、
インターネットの世界で良く使われるようになってきた文字コードですね。


なお UTF-16 においては、これらから外れるパターンとして、「サロゲートペア」という
特殊なパターンがあります。

たとえば、魚の「𩹉(とびうお)」や「𩸽(ほっけ)」などがサロゲートペアに該当する文字で、
UTF-8 = 4 バイト、UTF-16 = 4 バイトで表現されます。(Shift_JIS には無い文字です)
# Windows での対応は Vista 以降なので、Windows 2000 や XP では正しく表示できないかも。


> 少数点3桁表示で以下四捨五入にしますが、
少数 → 小数ですね。



> 今回の問題は解決でいいでしょうか?
再度確認。

http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=10739#CommentId22985
> Power Packsは今回の件では関係がないようです。
>
> プロジェクト名の日本語入力では全角文字で12.5文字 
> もし全角文字が2バイトで数えると25バイトが、ボーダーラインでしょうか?


上記の発言で納得しかけたのですが、よくよく考えてみると、
名前が短い方が失敗しているパターンもあったのですよね?


http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=10739#CommentId22979
>「直角三角形の各辺の長さを求める」を頒布したことがありましたが、
> このときは問題なく「setup.exe」アイコンでインストールを完了できました。

http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=10739#CommentId22982
>「テーパーノックピン寸法出力」にして頒布したことがありますが、このときも
>「LineShape」を使用したため必須項目にPower Packsを追加して頒布しましたが、
> この時も 「setup.exe」アイコンを利用してセットアップしようとしたところ、
> やはり同じ症状で下記のエラーが出ました。

これらは、「かな漢字で13文字以上だと失敗する」という仮定に反します。
名前の長さに影響していることは確かですが、何か他にも追加の条件がありそうです。


もしかして、『テーパーノックピン寸法出力』という半角カナ混在の名前だったりしますか?


>> それぞれのプロジェクト名を比較すると、下記のようになりますね。
失礼しました。
先の投稿で 【数え間違い】 をしていたので、あらためて再掲します。

『直角三角形の各辺の長さを求める』 15文字、UTF-8 = 45 バイト、UTF-16 = 30 バイト、Shift_JIS = 30 バイト
『テーパーノックピン寸法出力』   13文字、UTF-8 = 39 バイト、UTF-16 = 26 バイト、Shift_JIS = 26 バイト
『テーパーノックピン寸法出力』       15文字、UTF-8 = 45 バイト、UTF-16 = 30 バイト、Shift_JIS = 19 バイト


マニフェストファイルは通常 UTF-8 で書かれることが多いので、
恐らくはUTF-8 換算の長さに上限があるのかと思っていたのですが、
それだと「直角三角形の各辺の長さを求める」の方が成功している点を
説明できないですね。


> 題名を変えたほうがいいでしょうか?
まだ結論も出ていませんし、今のままで良いのでは無いでしょうか。