|
|
@@ -384,7 +384,11 @@ func (e *msgpackEncDriver) EncodeString(c charEncoding, s string) {
|
|
|
|
|
|
func (e *msgpackEncDriver) EncodeStringEnc(c charEncoding, s string) {
|
|
|
slen := len(s)
|
|
|
- e.writeContainerLen(msgpackContainerStr, slen)
|
|
|
+ if e.h.WriteExt {
|
|
|
+ e.writeContainerLen(msgpackContainerStr, slen)
|
|
|
+ } else {
|
|
|
+ e.writeContainerLen(msgpackContainerRawLegacy, slen)
|
|
|
+ }
|
|
|
if slen > 0 {
|
|
|
e.w.writestr(s)
|
|
|
}
|
|
|
@@ -521,7 +525,7 @@ func (d *msgpackDecDriver) DecodeNaked() {
|
|
|
n.v = valueTypeInt
|
|
|
n.i = int64(int8(bd))
|
|
|
case bd == mpStr8, bd == mpStr16, bd == mpStr32, bd >= mpFixStrMin && bd <= mpFixStrMax:
|
|
|
- if d.h.WriteExt {
|
|
|
+ if d.h.WriteExt || d.h.RawToString {
|
|
|
n.v = valueTypeString
|
|
|
n.s = d.DecodeString()
|
|
|
} else {
|
|
|
@@ -767,7 +771,7 @@ func (d *msgpackDecDriver) ContainerType() (vt valueType) {
|
|
|
} else if bd == mpBin8 || bd == mpBin16 || bd == mpBin32 {
|
|
|
return valueTypeBytes
|
|
|
} else if bd == mpStr8 || bd == mpStr16 || bd == mpStr32 || (bd >= mpFixStrMin && bd <= mpFixStrMax) {
|
|
|
- if d.h.WriteExt { // UTF-8 string (new spec)
|
|
|
+ if d.h.WriteExt || d.h.RawToString { // UTF-8 string (new spec)
|
|
|
return valueTypeString
|
|
|
}
|
|
|
return valueTypeBytes // raw (old spec)
|