Ruby | 인코딩 지정, BOM 첨부 파일 만들기

5770 단어 Ruby

해결: 그렇습니다!


예: BOMUTF16-LE이 있는 CSV 파일의 경우.
File.open('example.csv', 'w:UTF-16LE') do |f|
  f.write "\uFEFF"
  f.write "あ\t\t\t\tお"
end

인코딩 확인


linux file 명령을 통해 인코딩을 알 수 있습니다.
$ file example.csv
example.csv: Little-endian UTF-16 Unicode text, with no line terminators

내용의 확인

more에서 컨텐트를 볼 수 있습니다.
$ more example.csv
<FF><FE>B0      ^@D0    ^@F0    ^@H0    ^@J0

Excel로 확인



다음은 실패의 예이다


다른 줄을 그었다


puts라면 두 줄로 나눌 때 다른 줄이 있습니다.
File.open('example.csv', 'w:UTF-16LE') do |f|
  f.puts "\uFEFF"
  f.puts "あ\t\t\t\tお"
end

BOM을 단질 할당액으로 둘러쌌다

File.open('example.csv', 'w:UTF-16LE') do |f|
  f.write "\uFEFF"
  f.write "あ\t\t\t\tお"
end

BOM 지정 오류


나는 위키백과를 참고해서 "\xFF\xFE" 쓰면 좀 촌스럽다.(아직 잘 모름)

File.open('example.csv', 'w:UTF-16LE') do |f|
  bom = %w(FF FE).map { |e| e.hex.chr }.join # => "\xFF\xFE"
  f.write bomf
  f.write "あ\t\t\t\tお"
end

# => Encoding::UndefinedConversionError: "\xFF" from ASCII-8BIT to UTF-8

콘솔에서 확인

cathead 지령이라면 안에 있는 BOM도 엉망이 될 것 같아서 잘 못 한 것 같아요.more/less 괜찮은 것 같아)
$ cat example.csv
��B0    D0  F0  H0  J0% 
$ head example.csv
��B0    D0  F0  H0  J0%

시험을 준비하다

  • 이곳에 도착하기 전까지 오랜 시간이 걸렸다.
  • 컨디션

  • ruby 2.3.1
  • Max OS X El Capitan
  • 좋은 웹페이지 즐겨찾기