0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricks ( Spark ) にて Windows 機種依存文字 を保持しているソースを読み込む場合にはエンコーディングを `ms932` とするのがよさそうという話

Last updated at Posted at 2022-11-08

概要

Databricks ( Spark ) にて Windows 機種依存文字 を保持しているソースを読み込む場合には、エンコーディングを shift_jis ではなく、 ms932 にするのがよさそうと教えていただいた内容を共有します。

機種依存文字 とは、CP932 という Shift_JIS を独自に拡張した文字コードなどで定義されている文字であり、Macなどの他の機種では適切に表示ができない文字のことです。 Windows の 機種依存文字としては次のような文字があるようです。

① ② ③ ④ ⑤ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ ㍉ ㌔ ㌢ ㍍ ㌘ ㌧

Windows 機種依存文字が含まれるファイルを参照する場合には、shift_jisで読みこむと文字化けしていしまうため、ms932 で読むことで適切に読むことができそうです。

image.png

検証結果

1. Windows 機種依存文字を含むテキストファイルを生成

Windows 機種依存文字が含まれている可能性あり。

data = [
    {
        '_c0': '① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯  ⑰ ⑱ ⑲ ⑳ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ・ ㍉ ㌔ ㌢ ㍍ ㌘ ㌧ ㌃ ㌶ ㍑ ㍗ ㌍ ㌦ ㌣ ㌫ ㍊ ㌻ ㎜ ㎝ ㎞ ㎎ ㎏ ㏄ ㎡ ㍻ 〝 〟 № ㏍ ℡ ㊤ ㊥ ㊦ ㊧ ㊨ ㈱ ㈲ ㈹ ㍾ ㍽ ㍼  ≒ ≡ ∫ ∮ ∑ √ ⊥ ∠  ⊿ ∵ ∩ ∪ 亜 唖 娃 阿 哀 愛 挨 姶 逢 葵 茜 穐 悪 握 渥 旭 葦 ¬ ¦ ' " ㈱ № ℡ ∵ 纊 褜 鍈 銈 蓜 俉 炻 昱 棈 鋹 曻 彅 丨 仡 仼 伀 伃 伹 佖 侒 侊 侚 侔 俍 偀 倢 俿 倞 偆 偰 偂 傔 僴 僘 兊 兤 冝 冾 凬 刕 劜 劦 勀 勛 匀 匇 匤'
    },
    {
        '_c0': '卲 厓 厲 叝 﨎 咜 咊 咩 哿 喆 坙 坥 垬 埈 埇 﨏 塚 增 墲 夋 奓 奛 奝 奣 妤 妺 孖 寀 甯 寘 寬 尞 岦 岺 峵 崧 嵓 﨑 嵂 嵭 嶸 嶹 巐 弡 弴 彧 德 忞 恝 悅 悊 惞 惕 愠 惲 愑 愷 愰 憘 戓 抦 揵 摠 撝 擎 敎 昀 昕 昻 昉 昮 昞 昤 晥 晗 晙 晴 晳 暙 暠 暲 暿 曺 朎 朗 杦 枻 桒 柀 栁 桄 棏 﨓 楨 﨔 榘 槢 樰 橫 橆 橳 橾 櫢 櫤 毖 氿 汜 沆 汯 泚 洄 涇'
    },
    {
        '_c0': '浯 涖 涬 淏 淸 淲 淼 渹 湜 渧 渼 溿 澈 澵 濵 瀅 瀇 瀨 炅 炫 焏 焄 煜 煆 煇 凞 燁 燾 犱 犾 猤 猪 獷 玽 珉 珖 珣 珒 琇 珵 琦 琪 琩 琮 瑢 璉 璟 甁 畯 皂 皜 皞 皛 皦 益 睆 劯 砡 硎 硤 硺 礰 礼 神 祥 禔 福 禛 竑 竧 靖 竫 箞 精 絈 絜 綷 綠 緖 繒 罇 羡 羽 茁 荢 荿 菇 菶 葈 蒴 蕓 蕙 蕫 﨟 薰 蘒 﨡 蠇 裵 訒 訷 詹 誧 誾 諟 諸 諶 譓 譿 賰 賴' 
    },
    {
        '_c0': '贒 赶 﨣 軏 﨤 逸 遧 郞 都 鄕 鄧 釚 釗 釞 釭 釮 釤 釥 鈆 鈐 鈊 鈺 鉀 鈼 鉎 鉙 鉑 鈹 鉧 銧 鉷 鉸 鋧 鋗 鋙 鋐 﨧 鋕 鋠 鋓 錥 錡 鋻 﨨 錞 鋿 錝 錂 鍰 鍗 鎤 鏆 鏞 鏸 鐱 鑅 鑈 閒 隆 﨩 隝 隯 霳 霻 靃 靍 靏 靑 靕 顗 顥 飯 飼 餧 館 馞 驎 髙 髜 魵 魲 鮏 鮱 鮻 鰀 鵰 鵫 鶴 鸙 黑'  
    },
]
 
df = spark.createDataFrame(data)
df.display()
 
path_2 = "dbfs:/test/shift.txt"
df.write.format('csv').mode('overwrite').option('encoding', 'ms932').save(path_2)

image.png

2. エンコードをshift_jis で読み込む

df_2 = spark.read.format('csv').option('encoding', 'shift_jis').load(path_2)
 
df_2.display()

image.png

3. エンコードをms932 で読み込む

df_3 = spark.read.format('csv').option('encoding', 'ms932').load(path_2)
 
df_3.display()

image.png

4. 作成したリソースを削除

dbutils.fs.rm(path_2, True)

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?