diff --git a/apps/sam/java/src/net/i2p/sam/SAMUtils.java b/apps/sam/java/src/net/i2p/sam/SAMUtils.java
index 723defab627411e935ea01f3944fb008f35c357b..c5e9d9594f18bd00523f3dc377d3b7d39a6e5aa1 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMUtils.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMUtils.java
@@ -180,10 +180,10 @@ class SAMUtils {
      *  PING any   thing goes
      *  PONG any   thing   goes
      *
-     *  No escaping of '"' or anything else is allowed or defined
+     *  Escaping is allowed with a backslash, e.g. \"
      *  No spaces before or after '=' allowed
      *  Keys may not be quoted
-     *  COMMAND and OPCODE may not have '='
+     *  COMMAND, OPCODE, and keys may not have '=' or whitespace unless escaped
      *  Duplicate keys not allowed
      *</pre>
      *
@@ -274,6 +274,12 @@ class SAMUtils {
                     }
                     break;
 
+                case '\\':
+                    if (++i >= length)
+                        throw new SAMException("Unterminated escape");
+                    c = args.charAt(i);
+                    // fall through...
+
                 default:
                     buf.append(c);
                     break;
diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java
index 1c2406291a1bdc18d039763bcba151d87bfda842..85c34b49b89804c993c8a955168c5c4855465c8d 100644
--- a/core/java/src/net/i2p/util/EepGet.java
+++ b/core/java/src/net/i2p/util/EepGet.java
@@ -1520,7 +1520,7 @@ public class EepGet {
         String key = null;
         for (int i = 0; i < data.length; i++) {
             switch (data[i]) {
-                case '\"':
+                case '"':
                     if (isQuoted) {
                         // keys never quoted
                         if (key != null) {
diff --git a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java
index 05969ec03aa89dabd6f6199cd54d4b73b42936a2..67ab0095193dda2b0812ec4290022810f3b4145d 100644
--- a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java
+++ b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java
@@ -123,7 +123,7 @@ public class LoadClientAppsJob extends JobImpl {
             for (int i = 0; i < data.length; i++) {
                 switch (data[i]) {
                     case '\'':
-                    case '\"':
+                    case '"':
                         if (isQuoted) {
                             String str = buf.toString().trim();
                             if (str.length() > 0)