トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     AIRでファイルに文字を書き込む時UTF-8にならない
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
flashlite
Åê¹ÆNo.49047
投稿日時: 2012-4-26 20:16
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
AIRでファイルに文字を書き込む時UTF-8にならない
AIRにて、規定のファイル名を付けて
そのファイルに、所定の文字をUTF-8で書込みたいのですが
どうしてもShift-JISになってしまいます。

一連の処理で、2つのファイルを作成しているのですが
同じ
	var stream:FileStream = new FileStream();
	stream.open("sample1.txt", FileMode.WRITE);
	stream.writeUTFBytes(value)

を使っているにも係わらず、片方だけShift-JISになってしまい

writeUTFBytesをwriteUTFに変えてみたり、色々やってもだめ
シンプルな構成で切り分けて行ったところ

書き込む文字の中に、日本語の文字が1文字でも入っていると
正しくUTF-8で書き込まれるが、
英字のみだとShift-JISになっていることがわかりました。

仕事で依頼主から、規定の(日本語を含まない)文字が指定されていて、それをUTF-8で出力する必要が有ります。

何か根本的な勘違いをしているかも知れませんが
解決策など何か有りましたら、情報提供していただけると助かります。


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

永井勝則
Åê¹ÆNo.49048
投稿日時: 2012-4-26 22:51
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: AIRでファイルに文字を書き込む時UTF-8にならない
回答を試みようとする人が、みんな同じ手順をたどれるように、
問題が再現できる状況を、箇条書きで、具体的な手順を書いてもらえると、テストする側は助かります。

たとえば
1)テキストエディタで、korewa shift-jis desuという文字をShift-JISで作成し、デスクトップにsample.txtという名前で保存する

2)記述したコード

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

var val:String = "ABCD";
var file:File = File.desktopDirectory.resolvePath("sample.txt");
var stream:FileStream = new FileStream();
stream.open(file, FileMode.APPEND);
stream.writeUTFBytes(val);
stream.close();

3)実行結果:テキストエディタで開くと、具体的にどうなるか。
これをどうしたいか?

というようなことです。

元のファイルはShift-JISなのか、そこに日本語は含まれているのか、
上書きしたいのか、追加したいのか、などです。



----------------
永井勝則:
himco.jp :

flashlite
Åê¹ÆNo.49049
投稿日時: 2012-4-27 14:38
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: AIRでファイルに文字を書き込む時UTF-8にならない
ご指摘ありがとうございます。
改めて、状況説明をさせてください。

AIRを使って、文字が「UTF-8」で書き込まれたtextファイルを新規作成する必要があります。

永井さんの例文を大部分引用せていただきますが
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
 var val:String = "ABCで";
 var file:File = File.desktopDirectory.resolvePath("sample1.txt");
 var stream:FileStream = new FileStream();
 stream.open(file, FileMode.WRITE);
 stream.writeUTFBytes(val);
 stream.close();


これをテキストエディターで開いてみると
(私の場合はサクラエディター)UTF-8と表示されますし
Windowsの場合はメモ帳→名前を付けて保存をすると
ダイアログで文字コードがUTF-8となっていることから
正しくUTF-8になっていることがわかります。

ところが

import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
 var val:String = "ABCD";
 var file:File = File.desktopDirectory.resolvePath("sample2.txt");
 var stream:FileStream = new FileStream();
 stream.open(file, FileMode.WRITE);
 stream.writeUTFBytes(val);
 stream.close();


こちらでファイルを新規作成すると
エディターで開いてもSJISとなり、
メモ帳ではANSIとなってしまいます。

違いは、書き込む文字の値が「D」なのか「で」なのかだけです。今回は両方UTF-8で作成する必要があります。

正しいやり方など、何かわかりましたら情報提供をよろしくお願いします。


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

永井勝則
Åê¹ÆNo.49050
投稿日時: 2012-4-27 21:18
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: AIRでファイルに文字を書き込む時UTF-8にならない
初めはWindowsのみの結果かと思い、MacからWindowsに.AIRファイルをコピーしていろいろ試していたのですが、どうやらMacでも同じようです。
それは、ブラウザで.txtファイルを開き、ブラウザのエンコーディング方法を見て確認したことです。エンコーディングを自動検出にし、.txtファイルを開くと、Shift-_JISで表示されていました。

で、考えたのが.txtではなく.xmlにして、エンコーディングを指定するという方法です。

var val:String = "<?xml version='1.0' encoding='UTF-8'?><data>ABCD</data>";



----------------
永井勝則:
himco.jp :

flashlite
Åê¹ÆNo.49051
投稿日時: 2012-5-1 1:46
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: AIRでファイルに文字を書き込む時UTF-8にならない
レスありがとうございます。

私はMAC環境が無かったため、MACなら大丈夫じゃないか・・どうなんだろうと思っていました。

今回は、過去のシステムに(一部をAIRがバージョンアップとして)組み入れる必要があるため、出力ファイルをxmlにするわけにいきません。

自分だけの問題ではない、素直なやり方では出来ないという
可能性が高くなっただけで、前進したと思えます。

期日もあるので、正攻法以外の工夫もしてみようと思います。


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

flashlite
Åê¹ÆNo.49052
投稿日時: 2012-5-2 15:40
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: AIRでファイルに文字を書き込む時UTF-8にならない
その後ですが、
(1)
一度AIRを使って、日本語を含むUTF-8のテキストファイルを作成し
それを英数字のみのデータで上書きしてみましたが、やはりUnicode(Shift-JIS)になってしまい
(2)
テキストエディタで、先に空のUTF-8のファイルを作成し、
そこに英数字のみのデータを上書きしてみましたが、やはりUnicode(Shift-JIS)に
(3)
AIRのリファレンスにあるように素直に文字コード指定でUTF-8が有るので

stream.writeMultiByte(value, "utf-8");

でもやはり、UTF-8にはなってくれませんでした。

AIRを使って、「UTF-8文字コードで英数字だけのテキストファイル」を作る事が出来ないでいます。
手詰まりです。。


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

ひろゆき
Åê¹ÆNo.49053
投稿日時: 2012-5-2 17:54
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: AIRでファイルに文字を書き込む時UTF-8にならない
えっと、何となくなんですが。

BOMつきのtxtファイルにしないと、UTF-8として認識してくれないのでは?

なので、BOMつきのtxtファイルにする方法があれば。


----------------
質問する際は、回答者に具体的な情報を与えてください。

永井勝則
Åê¹ÆNo.49054
投稿日時: 2012-5-2 20:41
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: AIRでファイルに文字を書き込む時UTF-8にならない
ひろゆきさんの
引用:
BOMつきのtxtファイルにしないと、UTF-8として認識してくれないのでは?

なので、BOMつきのtxtファイルにする方法があれば。


をヒントに、こんなコードを書いてみました。
UTF-8になるのではないかと、思いますがどうでしょう?


import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

var val:String = "ABCD";
var file:File = File.desktopDirectory.resolvePath("sample.txt");

var stream:FileStream = new FileStream();
stream.open(file, FileMode.WRITE);
stream.writeByte(0xEF);
stream.writeByte(0xBB);
stream.writeByte(0xBF);
stream.close();

stream.open(file, FileMode.APPEND);
stream.writeMultiByte(val, "utf-8");
stream.close();




----------------
永井勝則:
himco.jp :

flashlite
Åê¹ÆNo.49055
投稿日時: 2012-5-6 14:08
常連
居住地: 東京
投稿: 69
使用環境:
WinXP Win7
Flash CS3,Flash CS5.0

FlashPlayer
FlashLite 1.1、2.0、2.1、3.1(下記)
Docomo SO903i
SH-08A
SoftBank 911T
 922SH
945SHG
au W61SA
S004
Disney DM001SH
Willcom Windows Mobile
 WX341k
Re: AIRでファイルに文字を書き込む時UTF-8にならない
ひろゆきさん永井さん

ありがとうございます。
言われてみれば、英数字のみのデータをエディタやWebブラウザが
UTF-8と認識するには、BOMということなんだなと納得いきます。

AIRだとマルチバイト文字が入ってないとUnicode(UTF-8Nでは無い?)で作成する
というような仕様なのでしょうかね。

早速、本番のプログラムに組み入れてみようと思います。

ーーーー--追記--ーーーー

上記の方法で、エディターなどで確かめたところ
正しくUTF-8で出力することが出来ましたので
これで解決という事に。

どうもありがとうございました。


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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops