2012-10-18 42 views
0

如果有另一個類似的帖子,我很抱歉,但很難用我的問題形式化問題。所以我有一個包含谷歌地圖和兩種形式的頁面,可以在地圖上添加額外信息。一種形式工作得很好,另一種形式不太好。我的語言是立陶宛語,所以我有一些特殊字符,如'ąčęėįšųū',並提交後的第二種形式,我有'%u0117%u0161'數據庫中的錯誤值。通過javascript向數據庫發佈數據導致編碼問題

enter image description here

在圖像編號1,這種形式的運作良好。編號2.是使編碼問題的形式,編號3.是提交表格編號2後的結果。

對於第二種形式,我使用了Google教程(https://developers.google.com/maps/articles/phpsqlinfo_v3),並編輯了一些小東西。

所以,如果有人能幫我解決這個問題,我將不勝感激。

Javascript代碼:

function initMap() { 
map = new google.maps.Map(document.getElementById("map"), { 
zoom: 0, 
center: new google.maps.LatLng(55.203953, 24.873047), 
mapTypeId: google.maps.MapTypeId.ROADMAP, 
mapTypeControl: true, 
panControl: true, 
mapTypeControlOptions: { 
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR 
}, 
navigationControl: true, 
navigationControlOptions: { 
style: google.maps.NavigationControlStyle.SMALL 
} 
}); 


var html = "<table>" + 
       "<tr><td>Pavadinimas:</td> <td><input type='text' name='name' id='name'/> </td> </tr>" + 
       "<tr><td>Miestas:</td> <td><input type='text' name='city' id='city'/></td> </tr>" + 
       "<tr><td>Adresas:</td> <td><input type='text' name='adress' id='adress'/></td> </tr>" + 
       "<tr><td>Apibudinimas:</td> <td><input type='text' name='description' id='description'/></td> </tr>" + 
       "<tr><td>Type:</td> <td><select id='type'>" + 
       "<option value='Baras' SELECTED>Baras</option>" + 
       "<option value='Restoranas'>Restoranas</option>" + 
       "<option value='Degalinė'>Degalinė</option>" + 
       "</select> </td></tr>" + 
       "<tr><td></td><td><input type='button' value='Save & Close' onclick='saveData()'/></td></tr>"; 

    infowindow = new google.maps.InfoWindow({ 
    content: html 
    }); 

    google.maps.event.addListener(map, "click", function(event) { 
     marker = new google.maps.Marker({ 
      position: event.latLng, 
      map: map 
     }); 
     google.maps.event.addListener(marker, "click", function() { 
      infowindow.open(map, marker); 
     }); 
    }); 

center = bounds.getCenter(); 
map.fitBounds(bounds); 

    } 

    function saveData() { 
     var name = escape(document.getElementById("name").value); 
     var adress = escape(document.getElementById("adress").value); 
     var city = escape(document.getElementById("city").value); 
     var description = escape(document.getElementById("description").value); 
     var type = document.getElementById("type").value; 
     var latlng = marker.getPosition(); 

     var url = "phpsqlinfo_addrow.php?name=" + name + "&adress=" + adress + "&city=" + city + 
     "&description=" + description + "&type=" + type + "&lat=" + latlng.lat() + "&lon=" + latlng.lng(); 
     downloadUrl(url, function(data, responseCode) { 
     if (responseCode == 200 && data.length <= 1) { 
      infowindow.close(); 
      document.getElementById("message").innerHTML = "Location added."; 
     } 

     }); 

    $(document).ready(function() { 
     setTimeout("ReloadPage()", 100); 
     }); 

    } 

     function downloadUrl(url, callback) { 
     var request = window.ActiveXObject ? 
      new ActiveXObject('Microsoft.XMLHTTP') : 
      new XMLHttpRequest; 

     request.onreadystatechange = function() { 
     if (request.readyState == 4) { 
      request.onreadystatechange = doNothing; 
      callback(request.responseText, request.status); 
     } 
     }; 

     request.open('GET', url, true); 
     request.send(null); 

    } 

    function ReloadPage() { 
    location.reload(); 
}; 


    function doNothing() {} 

PHP插入代碼:

require("controller/phpsqlinfo_dbinfo.php"); 

// Gets data from URL parameters 
$name = $_GET['name']; 

$adress = $_GET['adress']; 

$city = $_GET['city']; 

$description = $_GET['description']; 

$lat = $_GET['lat']; 

$lon = $_GET['lon']; 

$type = $_GET['type']; 


// Opens a connection to a MySQL server 
$connection=mysql_connect ("localhost", $dbuser, $dbpass); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 

// Set the active MySQL database 
$db_selected = mysql_select_db($dbname, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 

// Insert new row with user data 

//$submit="INSERT INTO poi_example (id, name, city, adress, description, lat, lon, type) VALUES (NULL,'$name','$city', '$adress','$description','$lat','$lon','$type');"; 

$query = sprintf("INSERT INTO poi_example " . 
     " (id, name, adress, city, description, lat, lon, type) " . 
     " VALUES (NULL, '%s', '%s', '%s', '%s', '%s', '%s', '%s');", 
     mysql_real_escape_string($name), 
     mysql_real_escape_string($adress), 
      mysql_real_escape_string($city), 
     mysql_real_escape_string($description), 
     mysql_real_escape_string($lat), 
     mysql_real_escape_string($lon), 
     mysql_real_escape_string($type)); 

$result = mysql_query($query); 


//print_r($result); 

if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

?> 
+1

這些並不是很差的價值。 '%u0117'是[unicode](http://www.fileformat.info/info/unicode/char/117/index.htm) – RASG

+0

是的,我用了不好的表情,對不起。 –

+0

你是如何獲得unicode格式的郵政價值,或者因爲它是 –

回答

1

有沒有可能是你的(本地?)數據庫沒有被配置爲使用正確的編碼?例如,我認爲UTF-8可能更適合立陶宛人。我認爲MySQL的標準編碼與latin1類似嗎?這只是一個猜測,但你可能需要檢查。

+0

謝謝,但是第一種形式是將正確的名稱發送到數據庫。也許這可能是'$ _POST'和'$ _GET'的問題?在第一種形式中,我使用'$ _POST',在第二個'$ _GET'中 –

+0

通過網站上檢索到的第一種形式發送的數據是否正確編碼? – bentrm

+0

是的,這是正確的 –