2012-10-18 44 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

是的,这是正确的 –