2015-08-15 21 views
0

問題: 你好,stackoverflow! 所以這個編碼的東西正在我的最後的神經。不足以說明在使用AJAX和PHP以及SQL等方式發送和退出時,編碼所需的最佳組合是什麼很難。但是它也會導致SESSION ???出現問題!UTF-8編碼和SESSION不一致?

所以基本上我已經找到了一個hot-fix解決方案,不用多虧谷歌,部分原因是我現在寫這個。但我也想看看你們中的任何一個人是否真的有更實際的解決方案。

問題: 例如,如果我想我的PHP文件有UTF-8編碼,它然後添加,然後只能在十六進制編輯器來查看和刪除文件的隱藏字符。對於那些不知道的,是的任何額外的字符沒有被註釋掉會導致SESSION問題,並給你頭錯誤。所以當我刪除它們並重新上傳文件時,它會回落到ANSI編碼。也許有不同的編輯器可以更好地將文件編碼爲UTF-8?我不知道,我現在使用的是Notepad ++,並且非常滿意,很難相信它會導致編碼問題。我也嘗試在.htaccess文件中更改我的默認編碼,無論如何也沒有索引文件的差異。

+0

那麼,問題是什麼?你編碼了什麼,你期望輸出什麼,你得到了什麼? – Hille

+0

我編碼並不重要,因爲代碼不在這裏試用,但SESSION和編碼是。所以這個問題真的沒有關係。至於我所期望的足夠清楚,在index.php中設置SESSIONS即UTF-8編碼的PHP文件。至於錯誤,你們都知道: 'session_start():無法發送會話緩存限制器 - 頭已經發送...' –

+0

但我的腳本目的有點難以解釋。因爲我從不同的網站複製UTF-8編碼的字符。然後我將它們傳遞給ANSI編碼文件。這回到我的東西完全不同。因此,例如,此商標'™'符號將在ANSI編碼的php文件中變爲''¢''。這就是它將如何顯示在奇怪的字符而不是實際的TM標誌的頁面上。並且有些跡象比其他人更難維護和替換,並且沒有替代HTML的替代品,例如'™' –

回答

0

SOLUTION: 我不得不因此通過使一個2個獨立的文件和相同的索引,只是用不同的編碼進行修復。就像我的主要文件,ANSI編碼,並呼籲

的index.php

,將有session_start();線在它和它下面我們包括原本應該在那裏我們的主要腳本,而是現在包括在此include('index_.php'); ................我也發現這個問題不會發生在所有的託管服務器上,但只有一些。所以真正的解決方案可能會在服務器設置中的某處找到。

+0

更實際的解決方案沒有在這裏找到:http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php –

0

看來,雖然我們得到WARNING: session_start(): Cannot send session cache limiter - headers already sent ...會議仍設置完全正常,所有我們可以在這一點上做的僅僅是通過將該對我們的PHP文件的頂部關閉警告錯誤:error_reporting(~E_NOTICE & ~E_WARNING);雖然這並不能真正解決我們的問題,只是隱藏它從公衆的眼睛。