diff --git a/src/com/android/settings/wifi/AccessPointDialog.java b/src/com/android/settings/wifi/AccessPointDialog.java
index 4804d78..e0f3adf 100644
--- a/src/com/android/settings/wifi/AccessPointDialog.java
+++ b/src/com/android/settings/wifi/AccessPointDialog.java
@@ -223,7 +223,7 @@
     /** Called after flags are set, the dialog's layout/etc should be set up here */
     private void onLayout() {
         final Context context = getContext();
-        final String ssid = mState.getHumanReadableSsid();
+        final String ssid = mState.ssid;
         
         int positiveButtonResId = 0;
         int negativeButtonResId = R.string.cancel;
@@ -439,7 +439,7 @@
             }
             
         } else if (mMode == MODE_CONFIGURE) {
-            String ssid = mState.getHumanReadableSsid();
+            String ssid = mState.ssid;
             if (!TextUtils.isEmpty(ssid)) {
                 mSsidEdit.setText(ssid);
             }
diff --git a/src/com/android/settings/wifi/AccessPointPreference.java b/src/com/android/settings/wifi/AccessPointPreference.java
index 6dd5492..0c5d6df 100644
--- a/src/com/android/settings/wifi/AccessPointPreference.java
+++ b/src/com/android/settings/wifi/AccessPointPreference.java
@@ -48,7 +48,7 @@
     }
     
     public void refresh() {
-        setTitle(mState.getHumanReadableSsid());
+        setTitle(mState.ssid);
         setSummary(mState.getSummarizedStatus());
 
         notifyChanged();
diff --git a/src/com/android/settings/wifi/AccessPointState.java b/src/com/android/settings/wifi/AccessPointState.java
index 405670a..1c3ef95 100644
--- a/src/com/android/settings/wifi/AccessPointState.java
+++ b/src/com/android/settings/wifi/AccessPointState.java
@@ -203,20 +203,7 @@
             requestRefresh();
         }
     }
-    
-    public String getHumanReadableSsid() {
-        if (TextUtils.isEmpty(ssid)) {
-            return "";
-        }
-        
-        final int lastPos = ssid.length() - 1;
-        if (ssid.charAt(0) == '"' && ssid.charAt(lastPos) == '"') {
-            return ssid.substring(1, lastPos);
-        }
-        
-        return ssid;
-    }
-    
+   
     public void setSsid(String ssid) {
         if (ssid != null) {
             this.ssid = ssid;
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 361f159..abb2408c 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -262,7 +262,7 @@
             return;
         }
      
-        menu.setHeaderTitle(state.getHumanReadableSsid());
+        menu.setHeaderTitle(state.ssid);
         
         if (state.isConnectable()) {
             menu.add(0, CONTEXT_MENU_ID_CONNECT, 0, R.string.wifi_context_menu_connect);
