#はじめに
Grasshopper の ReadFileコンポーネント でCSVデータを読み込んだら文字化けしてしまった。Shift JIS のテキストデータはエンコード指定が必要と教えていただいたのでやってみた。(kanano さんありがとうございます!)
ReadFileコンポーネントはutf-8で書かれているみたいですね!shift-jisで読むにはスクリプトでエンコード指定する必要がありそうです。
— kanano (@_kkanano) January 14, 2022
#Pythonで文字コードをゴニョゴニョ
GhPython Script コンポーネントのインプットを FileName アウトプットを txt に変更
「Python 文字コード」で検索すると山ほど情報が出てくるんだけど、GhPythonではうまく動かないものが多くいが意外と苦労した。最終的に成功したのはこちら
txt = []
with open(FileName) as f:
for line in f:
txt.append(unicode(line, 'shift-jis'))
#C#でもやってみた
このサイトを参考にC# Script コンポーネントでも作ってみた
Shift_Jisで保存されたファイルを読み込んでUTF-8に変換する
###using ディレクティブに追記
using System.Text;
using System.IO;
###RunScriptの中に追記
Encoding srcEncoding = Encoding.GetEncoding("shift_jis");
Encoding dstEncoding = Encoding.UTF8;
using (var reader = new StreamReader(FileName, srcEncoding))
{
string line = null;
var strList = new List<string>();
while ((line = reader.ReadLine()) != null)
{
String convertedLine =
dstEncoding.GetString(
System.Text.Encoding.Convert(
srcEncoding,
dstEncoding,
srcEncoding.GetBytes(line)));
strList.Add(convertedLine);
}
txt = strList;
}