終了

Illustratorのスクリプトで、アラートに出る、配列に追加した日本語が文字化けします。

エクスプローラー ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

お世話になります。
Illustratorのスクリプトを作成しているのですが、アラートに出る、配列に追加した日本語が文字化けしてしまいます。
定型句は文字化けしないのですが、何が原因として考えられるでしょうか。
ご存知の方、ぜひお知恵をお貸しください。

作業環境:
Illustrator2020(日本語版)
MacOS10.14.6


---問題のスクリプト------------------------

var nonMatchingFiles = []; // 条件を満たさないファイル名を格納する配列
〜〜〜

// 条件を満たさない場合、ファイル名を配列に追加
nonMatchingFiles.push(placedItem.file.name);

〜〜〜

// 条件を満たさないファイル名が格納された配列を確認して、空でなければアラートで表示
if (nonMatchingFiles.length > 0) {
alert("条件を満たさないファイル: \n" + nonMatchingFiles.join("\n"));
   return; // 処理を終了
}

------------------------------------------

試したこと
●UTF-8 のBOMなしBOM付きで保存しなおし
●別のテキストエディタを使ってスクリプトを開き、UTF-8で再保存
●JavaScriptでの文字コード変換の試み
function escapeFileName(fileName) {
return unescape(encodeURIComponent(fileName));
}
var fileNameEscaped = escapeFileName(placedItem.file.name);

 

キーワード
Mac , スクリプティング , 文字・フォント

表示

293

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines

correct answers 3 件の正解

Community Expert , Apr 21, 2024 Apr 21, 2024

手元環境(macOS11.7.10)でファイル名「13_日本語1.ai」を配置して名前を取ってみたところ、

結果が異なりました。これは見慣れたやつですね。

スクリーンショット 2024-04-22 11.02.05.png

 

これはdecodeURIで変換できました。

スクリーンショット 2024-04-22 11.02.35.png

 

ご提示のスクショと比較すると、「%25」に違和感があるということで…

%25って「%」なんですね。

スクリーンショット 2024-04-22 11.03.28.png

 

なので、コード全体を見ないと直接の原因はちょっとわかりませんが、

decodeURI() の二重がけで応急回避できるかと思います。

スクリーンショット 2024-04-22 11.07.45.png

投票

翻訳

翻訳
Community Expert , Apr 21, 2024 Apr 21, 2024

いまはMacでCatalina以降だとExtendScriotToolKitを使えないのでExtendScriptのDOMを調べるのにひと苦労なんですよね…

外部サイトですがこのあたり参考になりますね

 

投票

翻訳

翻訳
Community Expert , Apr 26, 2024 Apr 26, 2024

ん、fullNameはフルパスが返りますよ。それで正常です。

そこから正規表現で切り出す方法というのもあります。

file.fullName.replace(/^.+\/(?=[^\/]+$)/, "")

などでも。

投票

翻訳

翻訳
Community Expert ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

手元環境(macOS11.7.10)でファイル名「13_日本語1.ai」を配置して名前を取ってみたところ、

結果が異なりました。これは見慣れたやつですね。

スクリーンショット 2024-04-22 11.02.05.png

 

これはdecodeURIで変換できました。

スクリーンショット 2024-04-22 11.02.35.png

 

ご提示のスクショと比較すると、「%25」に違和感があるということで…

%25って「%」なんですね。

スクリーンショット 2024-04-22 11.03.28.png

 

なので、コード全体を見ないと直接の原因はちょっとわかりませんが、

decodeURI() の二重がけで応急回避できるかと思います。

スクリーンショット 2024-04-22 11.07.45.png

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

できました!ありがとうございます。根本的な解決が大事ではありますが、ひとまずこれで対応していきたいと思いまあす。

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

placedItem.fileプロパティはExtendScriptのFileオブジェクトを返します。

ですからFileオブジェクトのプロパティを調べればよいのです。

 

nameプロパティはURI表記のファイル名を返しますので、表示には適しません。

displayNameプロパティかfsNameプロパティであれば日本語がその通り取得できますので、単純にファイル名だけであればdisplayNameプロパティ、ファイルパス名も含めたければfsNameプロパティを使用してください。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

いまはMacでCatalina以降だとExtendScriotToolKitを使えないのでExtendScriptのDOMを調べるのにひと苦労なんですよね…

外部サイトですがこのあたり参考になりますね

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

var fileOBJ = app.activeDocument.placedItems[0].file;
alert(fileOBJ.name);
alert(decodeURI(fileOBJ.name));
alert(fileOBJ.displayName);
alert(fileOBJ.fsName);

displayNameは空文字が返ってきました。

やはりnameをdecodeURIするのが落とし所かなぁ。

 

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Apr 21, 2024 Apr 21, 2024

リンクをクリップボードにコピー

コピー完了

Omachi様

ajabon grinsmith様

monokano様

 

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

 

monokano様がおっしゃっておられるように、displayNameは、試したところ、空文字が返ってきました。

fsNameは、表示されることはされましたが、今のところファイルパスまで必要ないので悩ましいところ。

ajabon grinsmith様が提示してくださったリンク先の「fullNameプロパティ」だと、問題なく表示することができました。

 

細かいところの理解は追々していくとして(汗)、本当に助かりました!

皆様ありがとうございました!

 

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Apr 26, 2024 Apr 26, 2024

リンクをクリップボードにコピー

コピー完了

fullNameプロパティでできたと思ったのですが、今日動かしたら、当たり前ですがパスまで表示されました。何が起きてたのかちょっとわかりませんが、教えてくださった、decodeURIを使用したいと思います。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Apr 26, 2024 Apr 26, 2024

リンクをクリップボードにコピー

コピー完了

ん、fullNameはフルパスが返りますよ。それで正常です。

そこから正規表現で切り出す方法というのもあります。

file.fullName.replace(/^.+\/(?=[^\/]+$)/, "")

などでも。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
May 08, 2024 May 08, 2024

リンクをクリップボードにコピー

コピー完了

最新

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

色々なやり方があるのですね。ちょうど色々触ってたら教えていただいていたdecodeURIが効かない箇所があったので、file.fullName.replace(/^.+\/(?=[^\/]+$)/, "")を試すといけました。

本当にありがとうございます。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines