9 건의
Ruby 검색결과

오랜만에 해보고 싶은 게 생겨서 새로운 젬을 만들던 중


Base64 모듈을 사용 하게 되었다.


연동을 하려던 곳에서 원하는 것은 JSON 을 Base64 인코딩 하는 것이었다.


하지만 계속해서 에러가 발생..


왜 그런지 알수가 없어서 찾아보니


루비에서는 60Character 마다 "\n" 을 붙인다고한다



irb > json = {a: "aaaaaaaaa", b:  "bbbbbbbbb", c: "ccccccccc", d: "ddddddddddd", e: "eeeeeeeeeee"}

irb> Base64.encode64(json.to_json)


=> "eyJhIjoiYWFhYWFhYWFhIiwiYiI6ImJiYmJiYmJiYiIsImMiOiJjY2NjY2Nj\nY2MiLCJkIjoiZGRkZGRkZGRkZGQiLCJlIjoiZWVlZWVlZWVlZWUifQ==\n" 


결과값인 

"eyJhIjoiYWFhYWFhYWFhIiwiYiI6ImJiYmJiYmJiYiIsImMiOiJjY2NjY2Nj\nY2MiLCJkIjoiZGRkZGRkZGRkZGQiLCJlIjoiZWVlZWVlZWVlZWUifQ==\n"

에  보면 중간에 \n 값이 들어간다.


커뮤니티의 도움을 받아보니 다음과 같은 규격(RFC 2045)이 있다.

https://www.ietf.org/rfc/rfc2045.txt

Each 6-bit group is used as an index into an array of 64 printable
   characters.  The character referenced by the index is placed in the
   output string.

아마도 루비 개발지에서 64 printable character 라는 구절때문에 60 character 마다 \n 을 넣은게 아닐까 생각된다.


하지만  API 에서는  \n 이 들어가지 않아야한다.

그럴 때는


irb > json = {a: "aaaaaaaaa", b:  "bbbbbbbbb", c: "ccccccccc", d: "ddddddddddd", e: "eeeeeeeeeee"}

irb>  Base64.strict_encode64(json.to_json)


=> "eyJhIjoiYWFhYWFhYWFhIiwiYiI6ImJiYmJiYmJiYiIsImMiOiJjY2NjY2NjY2MiLCJkIjoiZGRkZGRkZGRkZGQiLCJlIjoiZWVlZWVlZWVlZWUifQ==" 


위와 같이 strct_endcode64() 를 사용하면 된다.

TokenMarket ICO calendar
태그