diff --git a/app/src/main/java/org/apache/roller/weblogger/pojos/User.java b/app/src/main/java/org/apache/roller/weblogger/pojos/User.java
index 017a0bc..da100e7 100644
--- a/app/src/main/java/org/apache/roller/weblogger/pojos/User.java
+++ b/app/src/main/java/org/apache/roller/weblogger/pojos/User.java
@@ -186,25 +186,25 @@
     }
 
     /**
-     * Locale of the user.
+     * Locale of the user, must be valid Java locale.
      */
     public String getLocale() {
         return this.locale;
     }
     
     public void setLocale(String locale) {
-        this.locale =  HTMLSanitizer.conditionallySanitize(locale);
+        this.locale = locale;
     }
 
     /**
-     * Timezone of the user.
+     * Timezone of the user, must be valid Java timezone.
      */
     public String getTimeZone() {
         return this.timeZone;
     }
     
     public void setTimeZone(String timeZone) {
-        this.timeZone =  HTMLSanitizer.conditionallySanitize(timeZone);
+        this.timeZone = timeZone;
     }
     
     
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
index fc39212..6f83a0d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
@@ -157,6 +157,7 @@
 
         // validate that bean's timeZone field is a valid time zone
         if (!StringUtils.isEmpty(getBean().getTimeZone())) {
+            // looking up the time zone by id did not work for me
             final Optional<String> first = Arrays.stream(TimeZone.getAvailableIDs())
                     .filter(id -> id.equals(getBean().getTimeZone())).findFirst();
             if (first.isEmpty()) {
@@ -166,8 +167,10 @@
 
         // validate that bean's locale field is a valid locale
         if (!StringUtils.isEmpty(getBean().getLocale())) {
-            Locale locale = Locale.forLanguageTag(bean.getLocale());
-            if (locale == null || "".equals(locale.getDisplayName())) {
+            // looking up the time zone by id did not work for me
+            final Optional<Locale> first = Arrays.stream(Locale.getAvailableLocales())
+                    .filter(locale -> locale.toString().equals(getBean().getLocale())).findFirst();
+            if (first.isEmpty() || "".equals(first.get().getDisplayName())) {
                 addError("error.add.user.invalid.locale");
             }
         }
diff --git a/assembly-release/sign-release.sh b/assembly-release/sign-release.sh
index 0c959ac..650ca2c 100755
--- a/assembly-release/sign-release.sh
+++ b/assembly-release/sign-release.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env bash
 
-export rcstring="r1"
+export rcstring="r2"
 export vstring="6.1.3"
 
 # for rc releases we rename the release files
