diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/Validator.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/Validator.java
index 4dc8f48..5267b23 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/Validator.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/helper/Validator.java
@@ -375,6 +375,21 @@
                             && property.getType() == PropertyType.Char) {
                 property.setType(PropertyType.Character);
             }
+            // check character property value
+            if ( property.getType() == PropertyType.Char || property.getType() == PropertyType.Character ) {
+                if ( property.getValue() != null ) {
+                    if ( property.getValue().length() != 1 ) {
+                        this.logError(property, "Value is not a character: " + property.getValue());
+                    }
+                }
+                if ( property.getMultiValue() != null ) {
+                    for(final String value : property.getMultiValue() ) {
+                        if ( value.length() != 1 ) {
+                            this.logError(property, "Value is not a character: " + value);
+                        }
+                    }
+                }
+            }
         }
         // TODO might want to check value
     }
diff --git a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java
index fe6ba6a..e520db1 100644
--- a/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java
+++ b/scrplugin/generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java
@@ -339,7 +339,13 @@
         if ( property.getType() != PropertyType.String ) {
             IOUtils.addAttribute(ai, PROPERTY_ATTR_TYPE, property.getType());
         }
-        IOUtils.addAttribute(ai, PROPERTY_ATTR_VALUE, property.getValue());
+        String value = property.getValue();
+        if ( value != null ) {
+            if ( property.getType() == PropertyType.Character || property.getType() == PropertyType.Char ) {
+                value = String.valueOf((int)value.charAt(0));
+            }
+            IOUtils.addAttribute(ai, PROPERTY_ATTR_VALUE, value);
+        }
 
         IOUtils.indent(contentHandler, 2);
         contentHandler.startElement(INNER_NAMESPACE_URI, ComponentDescriptorIO.PROPERTY, ComponentDescriptorIO.PROPERTY_QNAME, ai);
@@ -348,7 +354,11 @@
             IOUtils.text(contentHandler, "\n");
             for (int i = 0; i < property.getMultiValue().length; i++) {
                 IOUtils.indent(contentHandler, 3);
-                IOUtils.text(contentHandler, property.getMultiValue()[i]);
+                value = property.getMultiValue()[i];
+                if ( property.getType() == PropertyType.Character || property.getType() == PropertyType.Char ) {
+                    value = String.valueOf((int)value.charAt(0));
+                }
+                IOUtils.text(contentHandler, value);
                 IOUtils.newline(contentHandler);
             }
             IOUtils.indent(contentHandler, 2);
