問號,我處理與西班牙文本一些文本文件在PHP與我的Mac OS X 10. Eclipse的PHP我有編碼設置爲UTF-8,和一切的偉大工程除了一個小問題。在輸出文本文件中,所有¡
(顛倒感嘆號)均被� �
(兩個黑色菱形,問號由空格分隔)替換。其他人物(¿ñáéíóúü
)都沒有給我任何麻煩。我的Windows Vista機器出現類似的問題(它將用é
代替所有的¡
)。任何想法爲什麼這一個字符在UTF-8中出了問題,我該如何解決它?兩個鑽石,而不是顛倒的感嘆號
這是我正在使用的代碼。我原本沒有包括它,因爲它太長了,我不確定問題出在哪裏。正如你可以看到我已經試圖合併shiplu.mokadd.im的建議,但我仍然得到� �
。
<?php
ini_set("auto_detect_line_endings", true);
$sourceH = fopen("MainInput.txt", "r") or die("Can't open MainInput.txt.");
$sourceData = array();
$tracker = 0;
while (!feof($sourceH)){
$sourceData[$tracker] = fgets($sourceH);
$sourceData[$tracker] = preg_split("/\t/", $sourceData[$tracker]);
$tracker++;
}
$i = $tracker--;
$chars_hi = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÜ';
$chars_lo = 'abcdefghijklmnñopqrstuvwxyzáéíóúü';
$characters = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÜabcdefghijklmnñopqrstuvwxyzáéíóúü1234567890'-";
function lowercase($s) {
global $chars_hi, $chars_lo;
return strtr($s, $chars_hi, $chars_lo);
}
$myNewFile = "Processing/Prepared.txt";
$fhNew = fopen($myNewFile, 'w') or die("can't open Prepared\n");
$newText = "";
for ($n = 1; $n < $i; $n++) {
$myFile = $sourceData[$n][1];
$fh = fopen($myFile,'r') or die("can't open file ".$sourceData[$n][1]."\n");
fwrite($fhNew, "\n\nStartFile ".$sourceData[$n][0]."\n\n");
$position = 0;
$speaker = ">>u";
while (!feof($fh)){
$newText = fgets($fh);
$isLast = false;
$isFirst = true;
$new = "";
if (mb_strpos($newText, ">> i") !== false or mb_strpos($newText, ">>i") !== false or mb_strpos($newText, ">i") !== false or mb_strpos($newText, "> i") !== false) {
$speaker = ">>i";
}
elseif (mb_strpos($newText, ">> s") !== false or mb_strpos($newText, ">>s") !== false or mb_strpos($newText, ">s") !== false or mb_strpos($newText, "> s") !== false) {
$speaker = ">>s";
}
for ($in = 0; $in < mb_strlen($newText); $in++) {
if (mb_strpos($characters, $newText[$in]) !== false) {
if ($isFirst == true) {
$new = $new." ".$newText[$in];
$isFirst = false;
$isLast = true;
}
else {
$new = $new.$newText[$in];
}
}
elseif ($isLast == true) {
$isLast = false;
$isFirst = true;
$new = $new." ".($in + $position)." ".$speaker." ".$newText[$in];
}
else {
$new = $new.$newText[$in];
}
}
$position += mb_strlen($newText);
$newText = $new;
$newText = lowercase($newText);
fwrite($fhNew, $newText."\n");
}
fclose($fh);
}
fclose($fhNew);
?>
你需要顯示的代碼 – Esailija