お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-09-11 15:58:49

jelyRide
新しいメンバ
登録日: 2013-05-21

mkdirなどで日本語を含む文字列を設定する方法

御世話様でございます。

現在、組み込み用ubuntuのシステム上のアプリを開発しております。ubuntu自体は英語版であり、日本語は表示することが出来ません(余分なものを入れない為)。そのシステム上にsambaを用いてwindows機上にある共有フォルダをmountさせております。
大変御手数ですが、以下点についてお教え頂けないでしょうか?

【条件】
・ubuntuの環境は以下の通り。
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="Ubuntu 10.04 LTS"
・mountしたwindows共有フォルダ(XP)には日本語のフォルダが含まれる
・ubuntu上で動作するアプリ(動画圧縮)の保存先をmountしたwindowsのフォルダを指定したい(=mkdirで日本語フォルダを作成したい)
・日本語フォルダ名は、windowsからアプリにTCPで送信・指定される為、その指定されたフォルダ名称をそのままmkdirしてフォルダを作成したい
・プログラム内から「mkdir /mnt/smb/shared/aaa」など英数字のフォルダ作成が可能なことは確認済み
【質問事項】
・上の条件においてaaaの部分を日本語文字列化する方法をお教えください
・個人的には「mkdir /mnt/smb/shared/"\x82\x8A0\"」などのような方法でエスケープした文字列でフォルダ名が指定できないか模索しています

大変御手数、かつ初心者な質問で恐縮ですが、何卒よろしくお願い致します。

オフライン

 

#2 2013-09-12 17:13:38

jelyRide
新しいメンバ
登録日: 2013-05-21

Re: mkdirなどで日本語を含む文字列を設定する方法

御世話様でございます。

プログラム内からのsystem()に固執しすぎていた為に、目が曇っておりました。system()を使わずに、直接<sys/stat.h>のmkdir関数を用いることで日本語名のフォルダの作成を行う事は出来ました。

...
sprintf(command,"/mnt/smb/shared/%s", ms_recv.name);
mkdir(ms_recv.name, 766);
...


ただ、実際にはフォルダ作成の前段階のmountの際にもwin共有フォルダ名に日本語が含まれる為、やはりシェルでエスケープする方法が必要(sysytem()は避けられない?)な状態には変化ないのですが・・

sudo mount -t cifs -o username=xxxx,password=xxxx,codepage=cp932,iocharset=utf8,dirmode=0766,defaults //192.168.0.81/data/bbb /mnt/smb/shared/aaa
<---aaa,bbbを日本語になる為、エスケープしてシェルに引き渡したい


引き続き、アドバイス等頂けたら幸いです。宜しくお願い致します。

オフライン

 

#3 2013-09-12 19:37:34

jelyRide
新しいメンバ
登録日: 2013-05-21

Re: mkdirなどで日本語を含む文字列を設定する方法

御世話様でございます。

以下コマンドにて日本語フォルダをマウントさせることが出来ました。
解決致しました。お騒がせ致しました。

sudo mount -t cifs -o username=xxxx,password=xxxx,codepage=cp932,iocharset=utf8,dirmode=0766,defaults `echo -e "//192.168.0.81/\xE8\xA9\xA6\xE9\xA8\x93\xE6\x88\x90\xE7\xB8\xBE"` /mnt/smb/shared

オフライン

 

Board footer

Powered by FluxBB