diff --git a/mapstructure.go b/mapstructure.go
index cdd87c0..854eddf 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -234,6 +234,7 @@
 	dataVal := reflect.ValueOf(data)
 	dataKind := d.getKind(dataVal)
 
+	converted := true
 	switch {
 	case dataKind == reflect.String:
 		val.SetString(dataVal.String())
@@ -249,7 +250,20 @@
 		val.SetString(strconv.FormatUint(dataVal.Uint(), 10))
 	case dataKind == reflect.Float32 && d.config.WeaklyTypedInput:
 		val.SetString(strconv.FormatFloat(dataVal.Float(), 'f', -1, 64))
+	case dataKind == reflect.Slice && d.config.WeaklyTypedInput:
+		dataType := dataVal.Type()
+		elemKind := dataType.Elem().Kind()
+		switch {
+		case elemKind == reflect.Uint8:
+			val.SetString(string(dataVal.Interface().([]uint8)))
+		default:
+			converted = false
+		}
 	default:
+		converted = false
+	}
+
+	if !converted {
 		return fmt.Errorf(
 			"'%s' expected type '%s', got unconvertible type '%s'",
 			name, val.Type(), dataVal.Type())
diff --git a/mapstructure_test.go b/mapstructure_test.go
index 6b83c66..e82d508 100644
--- a/mapstructure_test.go
+++ b/mapstructure_test.go
@@ -66,28 +66,29 @@
 }
 
 type TypeConversionResult struct {
-	IntToFloat    float32
-	IntToUint     uint
-	IntToBool     bool
-	IntToString   string
-	UintToInt     int
-	UintToFloat   float32
-	UintToBool    bool
-	UintToString  string
-	BoolToInt     int
-	BoolToUint    uint
-	BoolToFloat   float32
-	BoolToString  string
-	FloatToInt    int
-	FloatToUint   uint
-	FloatToBool   bool
-	FloatToString string
-	StringToInt   int
-	StringToUint  uint
-	StringToBool  bool
-	StringToFloat float32
-	SliceToMap    map[string]interface{}
-	MapToSlice    []interface{}
+	IntToFloat         float32
+	IntToUint          uint
+	IntToBool          bool
+	IntToString        string
+	UintToInt          int
+	UintToFloat        float32
+	UintToBool         bool
+	UintToString       string
+	BoolToInt          int
+	BoolToUint         uint
+	BoolToFloat        float32
+	BoolToString       string
+	FloatToInt         int
+	FloatToUint        uint
+	FloatToBool        bool
+	FloatToString      string
+	SliceUint8ToString string
+	StringToInt        int
+	StringToUint       uint
+	StringToBool       bool
+	StringToFloat      float32
+	SliceToMap         map[string]interface{}
+	MapToSlice         []interface{}
 }
 
 func TestBasicTypes(t *testing.T) {
@@ -299,28 +300,29 @@
 
 func TestDecode_TypeConversion(t *testing.T) {
 	input := map[string]interface{}{
-		"IntToFloat":    42,
-		"IntToUint":     42,
-		"IntToBool":     1,
-		"IntToString":   42,
-		"UintToInt":     42,
-		"UintToFloat":   42,
-		"UintToBool":    42,
-		"UintToString":  42,
-		"BoolToInt":     true,
-		"BoolToUint":    true,
-		"BoolToFloat":   true,
-		"BoolToString":  true,
-		"FloatToInt":    42.42,
-		"FloatToUint":   42.42,
-		"FloatToBool":   42.42,
-		"FloatToString": 42.42,
-		"StringToInt":   "42",
-		"StringToUint":  "42",
-		"StringToBool":  "1",
-		"StringToFloat": "42.42",
-		"SliceToMap":    []interface{}{},
-		"MapToSlice":    map[string]interface{}{},
+		"IntToFloat":         42,
+		"IntToUint":          42,
+		"IntToBool":          1,
+		"IntToString":        42,
+		"UintToInt":          42,
+		"UintToFloat":        42,
+		"UintToBool":         42,
+		"UintToString":       42,
+		"BoolToInt":          true,
+		"BoolToUint":         true,
+		"BoolToFloat":        true,
+		"BoolToString":       true,
+		"FloatToInt":         42.42,
+		"FloatToUint":        42.42,
+		"FloatToBool":        42.42,
+		"FloatToString":      42.42,
+		"SliceUint8ToString": []uint8("foo"),
+		"StringToInt":        "42",
+		"StringToUint":       "42",
+		"StringToBool":       "1",
+		"StringToFloat":      "42.42",
+		"SliceToMap":         []interface{}{},
+		"MapToSlice":         map[string]interface{}{},
 	}
 
 	expectedResultStrict := TypeConversionResult{
@@ -336,28 +338,29 @@
 	}
 
 	expectedResultWeak := TypeConversionResult{
-		IntToFloat:    42.0,
-		IntToUint:     42,
-		IntToBool:     true,
-		IntToString:   "42",
-		UintToInt:     42,
-		UintToFloat:   42,
-		UintToBool:    true,
-		UintToString:  "42",
-		BoolToInt:     1,
-		BoolToUint:    1,
-		BoolToFloat:   1,
-		BoolToString:  "1",
-		FloatToInt:    42,
-		FloatToUint:   42,
-		FloatToBool:   true,
-		FloatToString: "42.42",
-		StringToInt:   42,
-		StringToUint:  42,
-		StringToBool:  true,
-		StringToFloat: 42.42,
-		SliceToMap:    map[string]interface{}{},
-		MapToSlice:    []interface{}{},
+		IntToFloat:         42.0,
+		IntToUint:          42,
+		IntToBool:          true,
+		IntToString:        "42",
+		UintToInt:          42,
+		UintToFloat:        42,
+		UintToBool:         true,
+		UintToString:       "42",
+		BoolToInt:          1,
+		BoolToUint:         1,
+		BoolToFloat:        1,
+		BoolToString:       "1",
+		FloatToInt:         42,
+		FloatToUint:        42,
+		FloatToBool:        true,
+		FloatToString:      "42.42",
+		SliceUint8ToString: "foo",
+		StringToInt:        42,
+		StringToUint:       42,
+		StringToBool:       true,
+		StringToFloat:      42.42,
+		SliceToMap:         map[string]interface{}{},
+		MapToSlice:         []interface{}{},
 	}
 
 	// Test strict type conversion
