PHP json_decode () devuelve NULL con JSON válido?

Tengo este objeto JSON almacenado en un archivo de texto sin formato:

{
    "MySQL": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "DatabaseName": "(dbname)"
    },
    "Ftp": {
        "Server": "(server)",
        "Username": "(user)",
        "Password": "(pwd)",
        "RootFolder": "(rf)"
    },
    "BasePath": "../../bin/",
    "NotesAppPath": "notas",
    "SearchAppPath": "buscar",
    "BaseUrl": "http:\/\/montemaiztusitio.com.ar",
    "InitialExtensions": [
        "nem.mysqlhandler",
        "nem.string",
        "nem.colour",
        "nem.filesystem",
        "nem.rss",
        "nem.date",
        "nem.template",
        "nem.media",
        "nem.measuring",
        "nem.weather",
        "nem.currency"
    ],
    "MediaPath": "media",
    "MediaGalleriesTable": "journal_media_galleries",
    "MediaTable": "journal_media",
    "Journal": {
        "AllowedAdFileFormats": [
            "flv:1",
            "jpg:2",
            "gif:3",
            "png:4",
            "swf:5"
        ],
        "AdColumnId": "3",
        "RSSLinkFormat": "%DOMAIN%\/notas\/%YEAR%-%MONTH%-%DAY%\/%TITLE%/",
        "FrontendLayout": "Flat",
        "AdPath": "ad",
        "SiteTitle": "Monte Maíz: Tu Sitio",
        "GlobalSiteDescription": "Periódico local de Monte Maíz.",
        "MoreInfoAt": "Más información aquí, en el Periódico local de Monte Maíz.",
        "TemplatePath": "templates",
        "WeatherSource": "accuweather:SAM|AR|AR005|MONTE MAIZ",
        "WeatherMeasureType": "1",
        "CurrencySource": "cotizacion-monedas:Dolar|Euro|Real",
        "TimesSingular": "vez",
        "TimesPlural": "veces"
    }
}

Cuando trato de decodificarlo conjson_decode(), devuelve NULL. ¿Por qué? El archivo es legible (intenté hacer ecofile_get_contents() y funcionó bien).

He probado JSON contrahttp://jsonlint.com/ Y es perfectamente válido.

¿Qué pasa aquí?

Solución

Buscando respuestas en Google, volví a SO:json_decode devuelve NULL después de la llamada del servicio web. Mi archivo JSON tenía la secuencia UTF BOM (algunos caracteres binarios que no deberían estar allí), rompiendo así la estructura JSON. Fui a Hex Editor, borré los bytes. Todo ha vuelto a la normalidad. ¿Por qué ha sucedido esto?Porque edité el archivo usando el Bloc de notas de Microsoft Windows. Idea terrible!

Respuestas a la pregunta(16)

Su respuesta a la pregunta