LoginSignup
1
2

More than 3 years have passed since last update.

Vuetifyのv-file-inputでのテキストファイル文字化け対応法

Last updated at Posted at 2020-09-22

概要

Vuetifyのv-file-inputコンポーネントを使って、shift-jisの文字コードで保存したcsvやtextファイルを単純に読み込んだ場合、文字化けしてしまうのでその対応法についてまとめました

方法

文字化けへの対応方法としては文字コード変換を行うencode.jsを使用し、importしたテキストファイルのエンコード処理をしています。

ソース

事前にencode.jsはimportしてください。

html
<div id="app">
  <v-app>
    <v-row>
      <v-col>
        <v-file-input
          label="テキストファイルを選択"
          @change="getFileContent"
        />
      </v-col>
      <v-col>
        {{ content }}
      </v-col>    
    </v-row>
  </v-app>
</div>
js
new Vue({
  el: '#app',
  vuetify: new Vuetify(),
  data () {
    return {
       content: ''
    }
  },
  methods: {
    async getFileContent (file) {
      try {
        const content = await this.readFileAsync(file)  
        this.content = content

      } catch (e) {
        console.log(e)
      }
    },
    readFileAsync (file) {
      return new Promise((resolve, reject) => {
        const reader = new FileReader()
        reader.onload = () => {
          //文字列をバイト列に変換  
          var sjisArray = new Uint8Array(reader.result);
          //encode.jsを使い、文字コードを自動判別しUNICODEへ変換
          var unicodeArray = Encoding.convert(sjisArray, {
            to: 'UNICODE',
            from: 'AUTO',
            type: 'string'
          });
          resolve(unicodeArray);
        }
        reader.onerror = reject;
        reader.readAsArrayBuffer(file);
      })
    }
  }
})

参考

1
2
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
1
2