summaryrefslogtreecommitdiffstats
path: root/src/json.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/json.c b/src/json.c
index a704fd5eb5..36876455b5 100644
--- a/src/json.c
+++ b/src/json.c
@@ -83,12 +83,15 @@ write_string(garray_T *gap, char_u *str)
vimconv_T conv;
char_u *converted = NULL;
- convert_setup(&conv, p_enc, (char_u*)"utf-8");
- if (conv.vc_type != CONV_NONE)
- converted = res = string_convert(&conv, res, NULL);
- convert_setup(&conv, NULL, NULL);
+ if (!enc_utf8)
+ {
+ conv.vc_type = CONV_NONE;
+ convert_setup(&conv, p_enc, (char_u*)"utf-8");
+ if (conv.vc_type != CONV_NONE)
+ converted = res = string_convert(&conv, res, NULL);
+ convert_setup(&conv, NULL, NULL);
+ }
#endif
-
ga_append(gap, '"');
while (*res != NUL)
{
@@ -540,10 +543,14 @@ json_decode_string(js_read_T *reader, typval_T *res)
p = reader->js_buf + reader->js_used + 1; /* skip over " */
#if defined(FEAT_MBYTE) && defined(USE_ICONV)
- convert_setup(&conv, (char_u*)"utf-8", p_enc);
- if (conv.vc_type != CONV_NONE)
- converted = p = string_convert(&conv, p, NULL);
- convert_setup(&conv, NULL, NULL);
+ if (!enc_utf8)
+ {
+ conv.vc_type = CONV_NONE;
+ convert_setup(&conv, (char_u*)"utf-8", p_enc);
+ if (conv.vc_type != CONV_NONE)
+ converted = p = string_convert(&conv, p, NULL);
+ convert_setup(&conv, NULL, NULL);
+ }
#endif
while (*p != '"')
{