2016-05-31 2 views
1

MySQL 데이터베이스와 통신하는 golang 웹 서버가 있습니다. 사용자는 댓글을 게시 할 수 있으며이 댓글에는 다른 utf8mb4 문자 사이에 그림이 포함될 수 있습니다. 내 데이터베이스는 이모티콘 문자를 저장하고 검색 할 수 있지만 JSON 마샬링/언 마샬링, 이모티콘이 엉망이 될 때 사용할 수 있습니다. Go의 네이티브 인코딩/json 패키지를 사용하여 utf8mb4 문자를 디코딩/인코딩 할 수 있습니까? 그렇다면 어떻게해야할까요? 미리 감사드립니다!Golang JSON 마샬링 이모티콘을 물음표로 변환

+3

값을 [] 바이트로 마샬링하고 인코딩이 전혀 걱정할 수 있습니까? – JimB

+1

맹 글링의 예를 포함 할 수 있습니까? – Snowman

+0

@ JimB의 제안은 아마 당신을 위해 얻을 것만 큼 좋을 것입니다. 귀하의 질문을 읽은 후 json 패키지를 검토하는 데 몇 분을 보냈습니다. 어쨌든 인코딩을 'utf8mb4'로 지정할 수 있습니다. – evanmcdonnal

답변

0

결국 해결 방법을 찾을 수있었습니다. 이전에는 JSON을 [] 바이트로 마샬링 한 다음 http.ResponseWriter에서 w.Write (jsonBytes)를 호출했습니다. 바이트를 문자열로 캐스팅하고 적절한 내용 유형 헤더를 작성하고 대신 io.WriteString을 사용하여 맹 글링을 막을 수있었습니다. 여기 내 코드는 다음과 같습니다.

returnJSON, error := json.Marshal(value) 
if error != nil { Error(w, error); return } 
w.Header().Set("Content-Type", "application/json; charset=utf-8") 
io.WriteString(w, string(returnJSON)) 
+0

'charset = utf-8 "문자열에 전달할 필요가 없음 :) 'w.Header(). Set ("Content-Type ","application/json; charset = utf-8 ")' –